本练习的目的是检测某个令牌的重复,我试图用来自Regex的符号*来做,但它不起作用。
我正在做一个基本的转换器,它包括用已经定义的语法翻译某些语法。在定义多个令牌的检测时,我仍然有一些缺点。也就是说,使用*来指定正则表达式令牌的重复(我认为*
用于定义令牌的重复),例如(参见SENTENCE*
) :
FUNCTION
: DEF ID PAR_OPEN PAR_CLOSE
SENTENCE*
END
{ $$ = 'function ' + $2 + '(){' + $5 + '}' };
SENTENCE
: PRINT
| VAR_ASSIGN
|;
语法适用于输入:
def hello()
println "dsasd"
end
但它不适用于条目:
def hello()
a = 3
println "dsasd"
end
抛出的错误是:
bash
Error: Parse error on line 3:
...llo() a = 3 println "dsasd"end
---------------------^
Expecting 'EOF', '+', 'OR', 'AND', '=', '<>', '-', '*', '/', '>', '<', '>=', '<=','^', 'PAR_CLOSE', '%', 'END', got 'PRINTLN'
你能告诉我我做错了吗?