Antlr3中的所有语法选项在哪里?

时间:2011-01-09 03:11:22

标签: antlr antlr3

在Antlr2中,有许多语法选项可以设置(reference)。现在在Antlr3中我们有1/3的选项(reference)。

所以我有两个问题:

  1. 有谁知道为什么有这么多选项被拿出来并且其中任何一个都会回来?
  2. 即使没有所有这些选项,Antlr3是否能够执行Antlr2的功能?
  3. 为了更具体地说明我的第二个问题,我希望能够做一些事情。首先,我想更改生成的词法分析器和解析器类的可见性(即Antlr2选项“classHeaderPrefix”)。

    其次,我希望能够忽略在某些关键字中找到的任何空白令牌,例如“& keyword&”和“& k ey w o rd&”两者都匹配(即Antlr2选项“忽略”,我认为?)。

    最后,我想让某些关键字不区分大小写(即Antlr2选项“caseSensitive”)。

1 个答案:

答案 0 :(得分:2)

  

BluePlateSpecial写了

     

为了更具体地说明我的第二个问题,我希望能够做一些事情。首先,我想更改生成的词法分析器类和解析器类的可见性(即Antlr2选项“classHeaderPrefix”)。

在v3中无法做到这一点。

  

BluePlateSpecial写了

     

其次,我希望能够忽略在某些关键字中找到的任何空白令牌,例如“& keyword&”和“& k ey w o rd&”两者都匹配(即Antlr2选项“忽略”,我认为?)。

这些选项可能已被删除,因为词法分析器中的LL(*)算法比v2中使用的算法强大得多。现在,没有必要选择这样的选项,因为这样可以解决问题:

FOO
  :  '&' (' ' | 'a'..'z')+ '&'
  ;
  

BluePlateSpecial写了

     

最后,我想让某些关键字不区分大小写(即Antlr2选项“caseSensitive”)。

除了以“硬”方式进行之外,在v3中也是不可能的:

BAR
  :  ('b' | 'B') ('a' | 'A') ('r' | 'R')
  ;