在StringTemplate规则中,我需要检查某个属性是否可用并根据结果采取行动:
RuleSempredFunction(r, actions) ::= <<
bool <if (parser)><parser.name><else><lexer.name><endif>::<r.name>Sempred(Ref\<<r.ctxType>\> _localctx, int predicateIndex) {
...
>>
正如您所看到的,解析器属性不在参数列表中,这可能就是我收到警告的原因:
context [/ LexerFile / Lexer / RuleSempredFunction] 2:10属性解析器 没有定义
否则规则的工作方式与预期完全相同(从/ LexerFile / Lexer和/ ParserFile / Parser调用,因此一旦parser
被定义,一次lexer
- 来自调用规则) 。我只是想摆脱警告。有什么想法吗?