控制的解析器是每个 { 关闭并匹配最接近的一个
Parser that controls is every { closed and matches the closest one
我的扫描仪工作正常,但我找不到我的解析器有什么问题
semi: "{" vallist "}"
| "{" "}""
;
val: tSTR
| tInt
;
vallist: vallist , val
| val
;
你有很多问题,其中一些可能只是你复制粘贴的错别字(你上面的问题会被野牛拒绝)。
您的主要问题可能是使用 "
(双引号)作为您的标记,这在大多数情况下没有做任何有用的事情——它创建了一个 'new' 标记,而不是与您的词法分析器可能 returns.
的单个字符标记相同
相反,您想使用 '
(单引号):
semi: '{' vallist '}'
| '{' '}'
;
val: tSTR
| tInt
| semi
;
vallist: vallist ',' val
| val
;
我的扫描仪工作正常,但我找不到我的解析器有什么问题
semi: "{" vallist "}"
| "{" "}""
;
val: tSTR
| tInt
;
vallist: vallist , val
| val
;
你有很多问题,其中一些可能只是你复制粘贴的错别字(你上面的问题会被野牛拒绝)。
您的主要问题可能是使用 "
(双引号)作为您的标记,这在大多数情况下没有做任何有用的事情——它创建了一个 'new' 标记,而不是与您的词法分析器可能 returns.
相反,您想使用 '
(单引号):
semi: '{' vallist '}'
| '{' '}'
;
val: tSTR
| tInt
| semi
;
vallist: vallist ',' val
| val
;