我的代码中有几种情况,如:
get?( id?:string ): any;
更糟糕的是:
export function urlAppend( url?:string, string?:string ): string;
在我的解析器中,我将'get'
和'string'
定义为多个规则的一部分,这意味着它被隐式放入词法分析器。但是,对于属性和方法名称,它们也需要归类为Identifiers
。
有没有办法可以让它发挥作用?
(语法适用于JavaScript和TypeScript,如果有帮助的话。)
答案 0 :(得分:1)
ANTLR在词法分析器中确定性地分配令牌类型。如果您的语言中包含上下文相关的关键字,则可以在解析器中定义identifier
规则来处理它:
identifier
: Identifier
| 'get'
| 'string'
| ... // other context-sensitive keywords
;