2013-07-09 23 views
1

我有我的代码的几种情况,如:如何防止标识符和字符串关键字从破坏其他

get?(id?:string): any; 

更糟:

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

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

有没有办法让我这个工作?

(语法是JavaScript和打字原稿,如果有帮助。)

回答

1

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

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