context-free-grammar - 这个流氓语法有什么问题?
问题描述
所以我试图让这个语法起作用,但是它给了我一个错误。它来自 Number 词法中的 @context="num"。它告诉我它是模棱两可的,谁能告诉我为什么?
start syntax Statement = Type Id "=" Number ";" ;
lexical Id = @context="id" [a-z] !<< [a-z]+ !>> [a-z] \ Type;
lexical Number = @context="num" [0-9]+;
keyword Type = @context="type" ("int"|"str"|"float");
这真的很奇怪,因为它在没有@context 标签的情况下工作,但是当我添加它时,我突然无法在不同的模块中导入/查找符号语句。或者是给我语法不明确的错误。
请帮忙
**编辑:**如果我将关键字 Type 更改为普通的词法类型,那么无论有没有括号,问题仍然存在。
解决方案
我认为您不应该使用关键字词法进行解析,因为它往往是很多东西的组合。
并且,关键字必须是带有普通文字的普通列表操作产品。它不适用于任意正则表达式。
所以它在没有上下文的情况下工作的原因,我猜是因为你还删除了括号,这将它变成了一个通用的替代列表?
推荐阅读
- node.js - 如何从后端(快递)检查用户会话是否处于活动状态?
- ajax - 使用 Golang 抓取 Ajax 请求结果
- matlab - Matlab GUI ODE 求解器“值”必须是双标量
- python - 如何清理这个网络爬虫
- flutter - 如何更改轮廓按钮的初始颜色?
- vue.js - CASL Vue - 如何在路由保护中访问 $can
- django - 使用更新模型中的值的按钮为用户交互编写 Django 的最佳方法是什么
- python - 操作字符串以在熊猫上删除列
- python - 如何使用python延迟鼠标点击?
- go - 在 Go 中保证至少经过一纳秒的最省时方法是什么?time.Sleep(time.Nanosecond) 可能需要几毫秒