如何使用ANTLR来解析“vector <int>(10)”?</int>

时间:2013-04-29 15:31:58

标签: antlr3

我正在尝试使用ANTLR3来解析一些C ++代码。

我想用C ++解析模板。 但是当我试图解析这个时,我遇到了一些麻烦:

vector<int>(10)

我发现这是一个没有模板语法的合法输入,因为我的解析认为这段代码只是:

(vector < int) > (10)

我的解析器认为这只是两个比较运算符。

这确实有意义,但不符合我的期望。

实际上,我认为这段代码应该以这种方式解析:

(vector<int>)(10)

我应该如何处理运算符优先级?非常感谢你!

更新:最终解决方案是使用谓词。

1 个答案:

答案 0 :(得分:0)

编写表达式规则时,您应该以比运算符更高的优先级解析< type >。这样,解析器首先会在找到其他内容之前尝试完成此规则。