首页 > 解决方案 > 控制的解析器是每个 { 关闭并匹配最接近的

问题描述

我的扫描仪工作正常,但我找不到我的解析器有什么问题

semi: "{" vallist "}"
    | "{" "}""
    ;
val: tSTR
   | tInt
   ;
vallist: vallist , val
       | val
       ;

标签: cparsingflexboxbison

解决方案


您有许多问题,其中一些可能只是复制粘贴中的拼写错误(您上面的问题将被野牛拒绝)。

您的主要问题可能是"对您的标记使用(双引号),这在大多数情况下并没有做任何有用的事情——它创建了一个与您的词法分析器可能返回的单字符标记不同的“新”标记。

相反,您想使用'(单引号):

semi: '{' vallist '}'
    | '{' '}'
    ;
val: tSTR
   | tInt
   | semi
   ;
vallist: vallist ',' val
       | val
       ;

推荐阅读