4

我希望使我的 JavaCC 定义的一部分不区分大小写,但不是全局的。

TOKEN [IGNORE_CASE]:
{
  < STRA : "a" >
}
TOKEN :
{
  < STRB : "b" >
}

以上似乎使所有标记(STRA AND STRB)不区分大小写。如何只忽略 STRB 大小写?

另外,我可以使以下生产不区分大小写,例如,只有“b = <...>”吗?

private void expr() : 
{
  Token a, b;
}
{
  a = < STRA > | b = < STRB>
}

我承认我无法通过阅读手册来弄清楚这一点。请帮帮我。如果我没有解释清楚,请告诉我。谢谢你。

4

1 回答 1

2

制作一个单独的标记列表,区分大小写并忽略大小写标记,然后您无需将语句全局声明为 Ignore case = true。尝试如下代码,

TOKEN [IGNORE_CASE]: {
 < STRB : "b" >
}

TOKEN : {
  < STRA : "a" >
}
于 2016-09-26T10:11:17.297 回答