解析由字母和数字组成的变量,如“JAVAC 1.7.0.XXX”
parsing variable composed with lettre and numbers like " JAVAC 1.7.0.XXX"
我正在尝试使用 JavaCC 解析正则表达式,但我遇到了由字母和数字组成的变量“Y”的问题,例如:“JAVA 1.7.1.XXX”。知道我已经定义了 Token
<id > = < lettre > | <number> < #lettre : [ "A"-"Z", "a"-"z"]> | < #number : [ "0"-"9" ] >
在执行过程中,解析器像 <id>
一样处理变量“Y”的第一部分。解析停止后。提前致谢。
编辑。
此处代码parseur.jj:
TOKEN : { <ID2 : (["a"-"z","A"-"Z","0"-"9","_"])+
( (["0"-"9"])+ "." (["0"-"9"])+ "." (["0"-"9"])+)+
(["a"-"z","A"-"Z","_","."])+ >}
TOKEN : { <ID : ["a"-"z","A"-"Z","_"] (["a"-"z","A"-"Z","0"-"9","_"])* >}
假设剩余的输入流以此开头:MyFile1_Test 1.2.3.txt
那么令牌 <ID>
归因于?
而不是 <ID2>
。通常,为什么这个规则不适用:如果一个以上的正则表达式描述了一个前缀,那么使用描述输入流的最长前缀的正则表达式。 (这个
被称为“最大咀嚼规则”。)非常感谢您的帮助
这是 parseur.jj 代码:
TOKEN : { <ID2 : (["a"-"z","A"-"Z","0"-"9","_"])+ ( (["0"-"9"])+ "." (["0"-"9"])+ "." (["0"-"9"])+)+ (["a"-"z","A"-"Z","_","."])+ >}
TOKEN : { <ID : ["a"-"z","A"-"Z","_"] (["a"-"z","A"-"Z","0"-"9","_"])* >}
假设剩余的输入流开始于:MyFile1_Test 1.2.3.txt
那么令牌 <ID>
是归因的,而不是 <ID2>
。通常,为什么此规则不适用:
If more than one regular expression describes a prefix, then a regular expression that describes the longest prefix of the input stream is used. (This is called the “maximal munch rule”.)
我正在尝试使用 JavaCC 解析正则表达式,但我遇到了由字母和数字组成的变量“Y”的问题,例如:“JAVA 1.7.1.XXX”。知道我已经定义了 Token
<id > = < lettre > | <number> < #lettre : [ "A"-"Z", "a"-"z"]> | < #number : [ "0"-"9" ] >
在执行过程中,解析器像 <id>
一样处理变量“Y”的第一部分。解析停止后。提前致谢。
编辑。
此处代码parseur.jj:
TOKEN : { <ID2 : (["a"-"z","A"-"Z","0"-"9","_"])+
( (["0"-"9"])+ "." (["0"-"9"])+ "." (["0"-"9"])+)+
(["a"-"z","A"-"Z","_","."])+ >}
TOKEN : { <ID : ["a"-"z","A"-"Z","_"] (["a"-"z","A"-"Z","0"-"9","_"])* >}
假设剩余的输入流以此开头:MyFile1_Test 1.2.3.txt
那么令牌 <ID>
归因于?
而不是 <ID2>
。通常,为什么这个规则不适用:如果一个以上的正则表达式描述了一个前缀,那么使用描述输入流的最长前缀的正则表达式。 (这个
被称为“最大咀嚼规则”。)非常感谢您的帮助
这是 parseur.jj 代码:
TOKEN : { <ID2 : (["a"-"z","A"-"Z","0"-"9","_"])+ ( (["0"-"9"])+ "." (["0"-"9"])+ "." (["0"-"9"])+)+ (["a"-"z","A"-"Z","_","."])+ >}
TOKEN : { <ID : ["a"-"z","A"-"Z","_"] (["a"-"z","A"-"Z","0"-"9","_"])* >}
假设剩余的输入流开始于:MyFile1_Test 1.2.3.txt
那么令牌 <ID>
是归因的,而不是 <ID2>
。通常,为什么此规则不适用:
If more than one regular expression describes a prefix, then a regular expression that describes the longest prefix of the input stream is used. (This is called the “maximal munch rule”.)