如何防止标识符和字符串关键字相互碰撞



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

get?( id?:string ): any;

更糟的是:

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

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

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

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

ANTLR在lexer中确定地分配令牌类型。如果你的语言中有上下文敏感的关键字,你可以在解析器中定义一个identifier规则来处理它:

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

相关内容

  • 没有找到相关文章

最新更新