gpt4 book ai didi

java - 用于宽容命令解释器的最佳 Java 库

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:16 25 4
gpt4 key购买 nike

我正在寻找一个或一组库来帮助我编写一个宽容的命令解释器。

一个宽容的命令解释器将是一个可以处理输入中简单甚至不那么简单的拼写和词序错误的命令解释器。

我的目标是拥有一个解释器,它可以从用户那里获取输入(命令),然后:

  1. 如果命令正确,则执行该命令。

  2. 对命令应用更正,直到生成正确的命令然后将该命令呈现给用户确认是否是“什么”用户的意思是'。

例如:

GlassFish Server 有一个名为 asadmin 的命令行管理界面。它允许用户编写与服务器交互的脚本并以交互方式使用它。

asadmin 命令具有相当严格的结构:

asadmin <asadmin options> <subcommand> <subcommand-options> <operand>

asadmin 命令当前尝试帮助拼写错误命令的用户,如下所示:

vkraemer$ ../../GlassFish3.0.1.b12/glassfish/bin/asadmin creat-domain --user foobar --portbase 2600 fubar
Deprecated syntax, instead use:
asadmin --user foobar creat-domain [options] ...
Remote server does not listen for requests on [localhost:4848].
Is the server up?
Unable to get remote commands.
Closest matching local command(s):
create-domain
Command creat-domain failed.

这是一个非常好的收获。当涉及到拼写错误的选项时,它就不那么聪明了。

我想消除对输入的几乎所有限制,以允许用户在命令中犯多个错误,但仍然有机会执行命令。

考虑这个 HCI 示例:

vkraemer$ ../../GlassFish3.0.1.b12/glassfish/bin/asadmin create-domain foobar
Enter admin user name [Enter to accept default "admin" / no password]>
Domain foobar already exists in /Users/vkraemer/GlassFish3.0.1.b12/glassfish/domains. Use a different domain name or the --domaindir option.
CLI130 Could not create domain, foobar
Command create-domain failed.
VBKMacBookPro:web-main vkraemer$ ../../GlassFish3.0.1.b12/glassfish/bin/asadmin create-domain foobar --domaindi /tmp/test
Enter admin user name [Enter to accept default "admin" / no password]>
Command create-domain only accepts one operand
Usage: asadmin [asadmin-utility-options] create-domain
[--adminport <adminport(default:4848)>]
[--instanceport <instanceport(default:8080)>] [--portbase <portbase>]
[--profile <profile>] [--template <template>] [--domaindir <domaindir>]
[--savemasterpassword[=<savemasterpassword(default:false)>]]
[--domainproperties <domainproperties>]
[--keytooloptions <keytooloptions>]
[--savelogin[=<savelogin(default:false)>]]
[--checkports[=<checkports(default:true)>]]
[--nopassword[=<nopassword(default:false)>]]
[-?|--help[=<help(default:false)>]] domain_name
Command create-domain failed.

如果能够让第二个命令成功完成,那就太好了,即使选项 --domaindir 拼写错误并且位于命令中的“错误位置”。

例如,第二个创建域命令的输出可能是

VBKMacBookPro:web-main vkraemer$ ../../GlassFish3.0.1.b12/glassfish/bin/asadmin create-domain foobar --domaindi /tmp/test
Enter admin user name [Enter to accept default "admin" / no password]>
Did you mean "create-domain --domaindir /tmp/test foobar"? (yes)

最佳答案

JNode中的命令解释器执行命令完成,了解每个命令的语法和命令参数语义。它不处理拼写/打字错误,但如果您使用补全,那么问题就不那么严重了。

关于java - 用于宽容命令解释器的最佳 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com