我正在尝试使用ANTLR3来解析一些C ++代码。
我想用C ++解析模板。 但是当我试图解析这个时,我遇到了一些麻烦:
vector<int>(10)
我发现这是一个没有模板语法的合法输入,因为我的解析认为这段代码只是:
(vector < int) > (10)
我的解析器认为这只是两个比较运算符。
这确实有意义,但不符合我的期望。
实际上,我认为这段代码应该以这种方式解析:
(vector<int>)(10)
我应该如何处理运算符优先级?非常感谢你!
更新:最终解决方案是使用谓词。
答案 0 :(得分:0)
编写表达式规则时,您应该以比运算符更高的优先级解析< type >
。这样,解析器首先会在找到其他内容之前尝试完成此规则。