2

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

get?( id?:string ): any;

更糟糕的是:

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

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

有没有办法让这个工作?

(语法适用于 JavaScript 和 TypeScript,以防万一。)

4

1 回答 1

1

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

identifier
  : Identifier
  | 'get'
  | 'string'
  | ... // other context-sensitive keywords
  ;
于 2013-07-09T23:51:56.663 回答