Dan*_*man 19
我非常喜欢正则表达式.只要命令字符串相当简单,您就可以编写一些可能需要几页代码手动解析的正则表达式.
我建议你查看http://www.regular-expressions.info,了解正则表达式的优秀介绍,以及Java的具体示例.
and*_*wrk 16
我假设您正在尝试使命令界面尽可能宽容.如果是这种情况,我建议你使用类似这样的算法:
Bar*_*ski 13
手动解析很有趣......开头:)
实际上,如果命令不是很复杂,您可以像命令行解释器中使用的那样处理它们.您可以使用以下库列表:http://java-source.net/open-source/command-line.我想你可以从apache commons CLI或args4j(使用注释)开始.它们有很好的文档记录,使用起来非常简单.它们自动处理解析,您唯一需要做的就是读取对象中的特定字段.
如果你有更复杂的命令,那么创建一个正式的语法可能是一个更好的主意.有一个非常好的库,带有用于语法的图形编辑器,调试器和解释器.它被称为ANTLR(和编辑器ANTLRWorks)并且它是免费的:)还有一些示例语法和教程.
小智 7
我想看看Java的迁移的魔域,并朝着一个简单的瘦自然语言处理器(或者通过标记化或正则表达式驱动),如下面的(此链接):
public static boolean simpleNLP( String inputline, String keywords[]) { int i; int maxToken = keywords.length; int to,from; if( inputline.length() = inputline.length()) return false; // check for blank and empty lines while( to >=0 ) { to = inputline.indexOf(' ',from); if( to > 0){ lexed.addElement(inputline.substring(from,to)); from = to; while( inputline.charAt(from) == ' ' && from = keywords.length) { status = true; break;} } } return status; }
...
任何让程序员有理由再次看到Zork的东西在我的书中都很好,只要注意Grues.
...
对ANTLR/ANTLRWorks的另一次投票.如果你创建了两个版本的文件,一个是用于实际执行命令的Java代码,另一个是没有(只有语法),那么你就拥有了该语言的可执行规范,非常适合测试,对于文档来说是一个福音如果您决定移植它,那么节省大量时间.
归档时间: |
|
查看次数: |
63235 次 |
最近记录: |