如何防止标识符和字符串关键字互相破坏

时间:2013-07-09 23:19:54

标签: antlr antlr4

我的代码中有几种情况,如:

get?( id?:string ): any;

更糟糕的是:

export function urlAppend( url?:string, string?:string ): string;

在我的解析器中,我将'get''string'定义为多个规则的一部分,这意味着它被隐式放入词法分析器。但是,对于属性和方法名称,它们也需要归类为Identifiers

有没有办法可以让它发挥作用?

(语法适用于JavaScript和TypeScript,如果有帮助的话。)

1 个答案:

答案 0 :(得分:1)

ANTLR在词法分析器中确定性地分配令牌类型。如果您的语言中包含上下文相关的关键字,则可以在解析器中定义identifier规则来处理它:

identifier
  : Identifier
  | 'get'
  | 'string'
  | ... // other context-sensitive keywords
  ;