[英]How to recognize repetition of tokens in jison?
本练习的目的是检测某个令牌的重复,我正尝试使用正则表达式中的*符号来实现此目的,但是它不起作用。
我正在做一个基本的编译器,它包括用已经定义的语法翻译某些语法。 在定义多个令牌的检测时,我仍然有一些缺点。 也就是说,例如,使用*指定正则表达式令牌的重复(我认为*
用于定义令牌的重复) (请参阅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'
你能告诉我我在做什么错吗?
通过在语法中添加%ebnf
来解决。 看这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.