根据上下文发出令牌

时间:2012-12-26 19:04:49

标签: antlr antlr3

我使用antlr 2.7.4来创建词法分析器。我被困在以下情况:

  • 如果冒号(':')后跟C1类中的字符,则应发出COLON令牌,然后发出令牌C1

  • 如果冒号后面跟着来自字符类C2的字符,冒号应该作为C2的一部分,并且应该发出令牌C2。

假设C1类是{1,2,3}而C2类是{A,B,C}那么:13应该被标记为COLON,然后是C1。但是:AB应该被标记为C2。

更具体地说,我的语法有两种结构:

  • 标识符:类型//它有三个标记:IDENT COLON IDENT。像类型注释一样的密码
  • :: //这是一个标识符。有一类可用作标识符的字符。 Colon可用作标识符,前提是它与类
  • 的其他字符一起使用

一些例子:

  • myvar:Int // IDENT COLON IDENT
  • :: // IDENT
  • :$ // IDENT
  • &安培;:&安培; // IDENT

后续问题:是否可以检查某个前瞻字符是否属于某个令牌类? 任何建议将非常感谢。

修改

我想我是antlrv2的唯一用户。我很乐意在antlrv3中找到一个解决方案,看看我是否可以在antlrv2中破解它。

0 个答案:

没有答案