我有以下简单的语法:
grammar MyGrammar
rule comparison_operator
'=' / '>' <ComparisonOperator>
end
end
当我解析字符串>
时,它会成功返回:
ComparisonOperator
当我解析字符串=
时,它返回时没有语法错误,但不会将匹配的字符串与ComparisonOperator
实例关联,而只关联到
Treetop::Runtime::SyntaxNode
如果我颠倒了语法中字符的顺序......
grammar MyGrammar
rule comparison_operator
'>' / '=' <ComparisonOperator>
end
end
然后它适用于=
,但对>
无效。
如果我将每个符号关联到ComparisonOperator
grammar MyGrammar
rule comparison_operator
'>' <ComparisonOperator> / '=' <ComparisonOperator>
end
end
然后它对两者都有效,但我发现这不是很直观。它 如果有很多符号选择,那就变得很麻烦。
有没有办法将ComparisonOperator
与所有替代品相关联
以更简单的方式?
更新:我添加了一个新的Github存储库,其中包含演示此问题的所有代码:https://github.com/pmatsinopoulos/treetop_tutorial
答案 0 :(得分:0)
简单地在括号中加上括号,因此ComparisonOperator适用于:
grammar MyGrammar
rule comparison_operator
('>' / '=') <ComparisonOperator>
end
end
括号创建一个包含替换项的序列,该类与该序列相关联。