c - 控制的解析器是每个 { 关闭并匹配最接近的
问题描述
我的扫描仪工作正常,但我找不到我的解析器有什么问题
semi: "{" vallist "}"
| "{" "}""
;
val: tSTR
| tInt
;
vallist: vallist , val
| val
;
解决方案
您有许多问题,其中一些可能只是复制粘贴中的拼写错误(您上面的问题将被野牛拒绝)。
您的主要问题可能是"
对您的标记使用(双引号),这在大多数情况下并没有做任何有用的事情——它创建了一个与您的词法分析器可能返回的单字符标记不同的“新”标记。
相反,您想使用'
(单引号):
semi: '{' vallist '}'
| '{' '}'
;
val: tSTR
| tInt
| semi
;
vallist: vallist ',' val
| val
;
推荐阅读
- r - 在不指定元素数量的情况下获取逻辑变量的所有可能组合
- android - SQLite (Android):使用 ORDER BY 更新查询
- azure - Jenkins - 无法创建用户数据目录:/var/lib/jenkins/snap/docker/:只读文件系统
- subset - 子集 dp 问题导致分段错误
- java - 在 iText 7 中计算表格的宽度
- azure-machine-learning-studio - 身份验证问题
- java - 复杂的泛型 java 接口和类
- mysql - MySQL查询以根据日期(字段总和)检索数据
- datetime - 如何为 Xamarin.Android AlarmManager 设置准确的时间
- php - 将每段的第一句改为