3

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

所以我对此有两个问题:

  1. 有谁知道为什么这么多选择被取消并且他们中的任何一个会回来吗?
  2. 即使没有所有这些选项,Antlr3 是否有能力做 Antlr2 可以做的事情?

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

其次,我希望能够忽略在某些关键字中发现的任何空白标记,例如“&keyword&”和“& key word &”都匹配(即我认为Antlr2 选项“ignore”?)。

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

4

1 回答 1

2

BluePlateSpecial 写道

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

在 v3 中没有办法做到这一点。

BluePlateSpecial 写道

其次,我希望能够忽略在某些关键字中找到的任何空白标记,例如“&keyword&”和“& key word &”都匹配(即我认为Antlr2 选项“ignore”?)。

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

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

BluePlateSpecial 写道

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

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

BAR
  :  ('b' | 'B') ('a' | 'A') ('r' | 'R')
  ;
于 2011-01-09T09:58:37.083 回答