我在ANTLR的v2中有以下语法,我需要帮助将其转换为v3
expression
: ( simpleLookup
| lookup
)
( x:LSQRBRACKET^ {#x.setType(ATTRIBUTES);} attributesExpr RSQRBRACKET! )?
;enter code here
实际上我尝试过以下但不确定它是否相同,并且在尝试构建解析器时也会出现以下错误
expression
: ( simpleLookup
| lookup
)
(x=LSQRBRACKET b=attributesExpr RSQRBRACKET )?) -> ^(ATTRIBUTES[$x] $a $b)?
;
并低于错误
expecting SEMI, found '->'
unexpected token: $
unexpected token: $
unexpected token: )
如何转换"!" in v3 from v2?
请帮助我提供专业知识.....
我还有一个问题是如何在语法级别编写v3中的树解析器,就像我们以前用以下格式编写的v2一样
class CustomTreeParser extends TreeParser;
答案 0 :(得分:0)
尝试这样的事情:
grammar YourGrammarName;
options {
output=AST;
}
tokens {
ATTRIBUTES;
}
// ...
expression
: ( simpleLookup
| lookup
)
( x=LSQRBRACKET^ {$x.setType(ATTRIBUTES);} attributesExpr RSQRBRACKET! )?
;
// ...
如何转换"!"在v3中从v2?
内联!
运算符(从AST中排除某些规则/标记)在第3版中保持不变。
我还有一个问题是如何在语法级别编写v3中的树解析器,就像在v2中一样......
像这样:
options {
output=AST;
}