|
|
1
14
我假设您正试图使命令界面尽可能地宽容。如果是这种情况,我建议您使用类似的算法:
|
|
2
19
我很喜欢正则表达式。只要命令字符串相当简单,就可以编写一些regex,这些regex可能需要几页代码才能手动解析。 我建议你退房 http://www.regular-expressions.info 一个很好的介绍正则表达式,以及Java的具体例子。 |
|
|
3
13
手动解析很有趣…开始时:) 在实践中,如果命令不是非常复杂,您可以用命令行解释器中使用的方法来处理它们。您可以使用的库列表如下: http://java-source.net/open-source/command-line . 我想你可以从 apache commons CLI 或 args4j (使用注释)。它们有很好的文档记录,而且使用起来非常简单。它们自动处理解析,您唯一需要做的就是读取对象中的特定字段。 如果您有更复杂的命令,那么创建一个形式语法可能是一个更好的主意。有一个非常好的库,其中包含图形编辑器、调试器和语法解释器。它叫 ANTLR (和编辑 ANTLRWorks )它是免费的:)还有一些示例语法和教程。 |
|
|
4
7
我会看看 Java migrations 属于 Zork 向一个简单的 Natural Language Processor (通过标记化或regex驱动)例如(通过此链接): 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的东西都是好的,只要当心咕噜声就行了。 … |
|
|
5
6
Sun本身建议不要使用StringTokenizer,而是使用String.Spilt方法。 您还需要查看模式类。 |
|
|
6
6
对安特尔/安特尔工厂的另一次投票。如果您创建文件的两个版本,一个是用Java代码来实际执行命令,另一个则没有(仅使用语法),那么您有一个可执行的语言规范,这对于测试来说是很好的,对于文档来说是一个福音,如果您决定将它移植到一个大的时间里。 |
|
|
7
4
如果这是解析命令行,我建议使用 Commons Cli .
|
|
8
4
尝试 JavaCC Java的解析器生成器。 它有许多用于解释语言的特性,并且在Eclipse上得到了很好的支持。 |
|
|
9
2
@在这里编码你的代码,有点清理和通过Eclipse( CTRL + 转移 + f )插在后面的是:) 包括每行前面的四个空格。
|
|
|
10
1
在空间上使用一个简单的字符串标记器是可行的,但是有很多方法可以做到这一点。 下面是一个使用标记器的例子:
然后标记可以进一步用于参数。这都假定参数中没有使用空格…因此,您可能希望使用自己的简单解析机制(例如,获取第一个空格,并将前面的文本用作操作,或者使用正则表达式(如果您不介意速度的影响),将其抽象出来,以便可以在任何地方使用。 |
|
|
11
1
当命令的分隔符字符串完全相同时,建议使用strinktokenizer类: 但是当分隔符变化或复杂时,建议您使用正则表达式,wich可以由字符串类本身使用,方法split,因为1.4。它使用java.util.regex包中的模式类 |
|
12
1
如果语言很简单就像 动名词 然后用手分裂很有效。 如果更复杂的话,您应该真正研究一个工具,比如antlr或javacc。 我有一个关于Antlr(v2)的教程 http://javadude.com/articles/antlrtut 这会让你了解它是如何工作的。 |
|
|
13
1
JCommander 看起来相当不错,虽然我还没有测试过。 |
|
|
14
1
如果文本包含一些分隔符,则可以
|
|
|
15
1
split方法可以将字符串拆分为指定子字符串表达式的数组
当 JDK 解释:什么时候 极限值>0 子数组长度上限,也就是说,如果可能,可以 极限-1 子除法,保留为子字符串(除了按限制1倍字符有字符串拆分结束); 极限<0 表示数组长度没有限制;
极限=0
字符串结尾空字符串将被截断。
|
|
|
David542 · 任何语言都允许函数名中有空格吗? 1 年前 |
|
Andy · 将LENGTH OF移动到COMP字段解析失败 1 年前 |
|
|
Chris Geo · 如何找到LR0项目的FOLLOW集合? 1 年前 |
|
|
Yash Singhal · 在reactjs中解析Pdf中的文本 2 年前 |
|
|
i33SoDA · 如何将逗号分隔的数字字符串解析为int数组? 2 年前 |