我正在解析类似SQL的语言,我需要能够处理这种表达式(例如):
SELECT number_of_children - number_of_cars
这应该是两列的算术减法。
SELECT child-name
这应该是列名'子名'
我该怎么做?
答案 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
。