JavaCC令牌中的反斜杠转义字符
我正在为这样的字符流编写解析器JavaCC令牌中的反斜杠转义字符,javacc,Javacc,我正在为这样的字符流编写解析器 Abc\(Def\)Gh(Ij;Kl);Mno(Pqr) 应该是这样的 Abc\(Def\)Gh LPAREN Ij 分号 吉隆坡 帕伦 分号 Mno LPAREN Pqr 帕伦 当前令牌定义为 TOKEN: { < WORDCHAR : (~[";", "(", ")"])+ > | <LPAREN: "("> | <RPAREN: ")"> | <SEMICOLON: ";"> }
Abc\(Def\)Gh(Ij;Kl);Mno(Pqr)
应该是这样的
TOKEN:
{
< WORDCHAR : (~[";", "(", ")"])+ >
| <LPAREN: "(">
| <RPAREN: ")">
| <SEMICOLON: ";">
}
令牌:
{
|
|
|
}
如何将WORDCHAR标记更改为包含反斜杠转义括号,但不包含不带前导反斜杠的括号?标记:
TOKEN:
{
< WORDCHAR : (~[";", "(", ")"] | "\\(" | "\\)")+ >
| <LPAREN: "(">
| <RPAREN: ")">
| <SEMICOLON: ";">
}
{
|
|
|
}
令牌:
{
|
|
|
}
在WORDCHAR令牌定义中添加“\\(“\\”)”
成功了。原始海报的问题没有问题。这个答案没有错。问题是“我应该如何更改WORDCHAR标记以包含反斜杠转义括号,而不是不带反斜杠的括号?”这个答案正好回答了这个问题。如果OP问他们的代码为什么不起作用,那就不同了;但很明显,为什么原作不起作用——它没有提到任何反斜杠。为了找出答案代码的工作原理,任何人都可以阅读文档。向WORDCHAR令牌定义中添加\\(“\\”\)“
就可以解决问题。原始海报的问题没有问题。这个答案没有错。问题是“我应该如何更改WORDCHAR标记以包含反斜杠转义括号,而不是不带反斜杠的括号?”这个答案正好回答了这个问题。如果OP问他们的代码为什么不起作用,那就不同了;但很明显,为什么原作不起作用——它没有提到任何反斜杠。要了解答案代码的工作原理,任何人都可以阅读文档。