首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javacc (ph-javacc plugin)生成带有case `\`的java开关。

javacc (ph-javacc plugin)生成带有case `\`的java开关。
EN

Stack Overflow用户
提问于 2018-10-21 11:07:57
回答 1查看 334关注 0票数 0

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

代码语言:javascript
复制
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中引起问题的语法部分(虽然我不确定是语法本身造成的):

代码语言:javascript
复制
<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生成有效的javacc语句,即使用'\\'而不是'\'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 17:23:22

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52914656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档