我正在尝试使用Javacc为G代码的子集编写解析器,但遇到了正则表达式的问题。当我使用符号"^"
和"$"
来匹配字符串的开头和结尾时,我得到错误,如果我删除它们但它运行正则表达式不正确。Javacc正则表达式
例如,我希望词法分析器接受字符串"G01"
或"G02"
但没有^
和$
它将允许"G01G02"
。
options {
STATIC = true;
}
PARSER_BEGIN(Parser)
class Parser {
public static void main(String[] args) {
Parser lexan = new Parser(System.in);
try {
lexan.start();
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Finished Lexical Analysis");
} // END main
} // END class
PARSER_END(Parser)
// TOKENS
// Ignore all whitespace
SKIP:{" " | "\t" | "\n" | "\r"}
// Declare tokens
TOKEN:{<G0X: ^"G0"["1", "2"]$>}
void start():
{}
{
(<G0X> {System.out.println("\G0X\n");})+
}
我需要什么样的正则表达式才能使它工作?
在此先感谢
试过,然后我得到以下错误:org.javacc.parser.ParseException:遇到 “ ”(“ ”(“ ”\“ ”“ 在第36行,列31 –
Gavin0487
因此,每个令牌” G01 “或”G02“必须单独在一行上,之前或之后没有空格?或者你想在“G”之前和“1”或“2”之后允许空格吗? –