Antlr4算术表示

时间:2014-12-01 08:00:09

标签: antlr4

我正在解析类似SQL的语言,我需要能够处理这种表达式(例如):

SELECT number_of_children - number_of_cars   

这应该是两列的算术减法。

SELECT child-name

这应该是列名'子名'

我该怎么做?

1 个答案:

答案 0 :(得分:1)

在第一种情况下,您应该有4个令牌:SELECT number_of_children - number_of_cars
在第二种情况下,您应该只有两个:SELECT child-name

这可以通过仔细选择词法规则来实现:

SELECT: 'SELECT';
OP_SUB: '-';
ID:     [a-zA-Z][a-zA-Z0-9_-]*;
WS:     [ \t\r\n]+ -> skip;

这些规则将在第一种情况下产生SELECT ID OP_SUB ID,在第二种情况下产生SELECT ID