我的代码中有几种情况,比如:
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
;