0
我需要ANTLR的一些帮助。 我有以下规则:具有多个元素的ANTLR规则
datasource
@init{boolean joinexpr = false;}
:
(s1=datasourceelement (joinclause1=joinclause joinelement1=datasourceelement onclause1=onclause (multijoinexpression)* {joinexpr=true;})?)
-> {joinexpr}? ^(JOINEXPRESSION
^(LEFTEXPR $s1?)
$joinclause1?
^(RIGHTEXPR $joinelement1?) $onclause1? multijoinexpression*
)
-> $s1
;
multijoinexpression
:
joinclause datasourceelement onclause
->
^(MULTIJOINEXPRESSION
joinclause
^(RIGHTEXPR datasourceelement) onclause
)
;
这是一个用于解析出连接表达式: 它吃起来
(表/查询)(上(场=字段加入(表/查询)) )*
,但我需要处理 “()”,围绕每个连接,所以它可以分析是这样的:
(((表1 JOIN表2 ON字段1 =字段2)表3 JOIN ON字段2 =字段3)加入...)
没有正常工作的支架,但我无法弄清楚如何添加左和右括号的规则,因为multijoinexpression *