javacc (ph-javacc-maven-plugin) 生成 java switch with case `\`

javacc (ph-javacc-maven-plugin) generates java switch with case `\`

我是 javacc 的新手。我试图解析现有的 javacc 语法(它是 JSR341, EL 3.0 Grammar)。它生成(几乎)正确的 java。但是,生成的代码包含非法的 switch 语句。我正在使用 ph-javacc-maven-plugin.

private int jjMoveStringLiteralDfa0_0(){
   switch(curChar)
   {
      case '#':
         return jjMoveStringLiteralDfa1_0(0x8L);
      case '$':
         return jjMoveStringLiteralDfa1_0(0x4L);
      case '\': // should be '\'
         return jjStartNfaWithStates_0(0, 4, 2);
      default :
         return jjMoveNfa_0(7, 0);
   }
}

这是 JS341 中有问题的语法部分(虽然我不确定它的语法本身)导致了问题:

<DEFAULT> TOKEN :
{
< LITERAL_EXPRESSION:
((~["\", "$", "#"])
| ("\" ("\" | "$" | "#"))
| ("$" ~["{", "$"])
| ("#" ~["{", "#"])
)+
| "$"
| "#"
>
|
< START_DYNAMIC_EXPRESSION: "${" > {stack.push(DEFAULT);}:
IN_EXPRESSION
|
< START_DEFERRED_EXPRESSION: "#{" > {stack.push(DEFAULT);}:
IN_EXPRESSION
}
<DEFAULT> SKIP : { "\" }

我尝试了选项(JAVA_UNICODE_ESCAPE、UNICODE_INPUT)和语法。但是没有结果。

问题:如何让 javacc 生成有效的 Java switch 语句,即使用 '\' 而不是 '\'

观察到的行为是一个问题,将在 parser-generator-cc 1.1.0 中解决。