问题描述
我的扫描仪工作正常,但我找不到我的解析器有什么问题
semi: "{" vallist "}"
| "{" "}""
;
val: tSTR
| tInt
;
vallist: vallist,val
| val
;
解决方法
您遇到了许多问题,其中一些可能只是您复制粘贴中的拼写错误(您上面的内容将被野牛拒绝)。
您的主要问题可能是对您的令牌使用 "
(双引号),这在大多数情况下没有任何用处——它创建了一个与单个令牌不同的“新”令牌您的词法分析器可能会返回的字符标记。
相反,您想使用 '
(单引号):
semi: '{' vallist '}'
| '{' '}'
;
val: tSTR
| tInt
| semi
;
vallist: vallist ',' val
| val
;