parsing - 函数调用的 ANTLR 规则
问题描述
我是 ANTLR4 的新手,我试图解析这个输入
X = 1 2 A(2) B (2)
在这个输入中,A 应该是一个函数调用,而 B 应该是一个名为 B 的变量。但是我在词法分析器中有一个规则可以跳过空格。
我如何为此输入编写解析器规则,但保留跳过空格的规则
提前致谢
解决方案
解决方案是在词法分析器中定义一个函数引入器,您可以在其中控制空格,然后在解析器中继续函数调用以进行灵活的参数处理:
FUNCTION_START: ID OPEN_PAR;
function: FUNCTION_START parameters CLOSE_PAR;
这里的关键点是,在词法分析器中,当您在另一个词法分析器规则中时,空格规则不会启动,因此该FUNCTION_START
规则将只接受identifer(
中间没有空格的表单输入。它不会匹配B (
。
推荐阅读
- here-api - Javascript API 的 HERE 地图:将地图边界设置为集群边界
- shell - 数据库从 Contao 2.11 迁移到 Magento 2.3 或 Shopware 6.1
- ruby-on-rails - 如何在 Rails 中同时使用渲染和重定向?
- postgresql - Postgres,为一个查询结果处理多个游标
- python - Pandas groupby and then pivot is not returning the desired output
- javascript - 深度反应useEffect / useEffect的使用?
- php - 第一次重新加载后的空会话变量
- python - Pyinstaller 创建 Pyside2 脚本的 exe 文件
- flutter - 如何在颤动中将主题存储在共享首选项中
- node.js - 如何使用 Node.js 快速会话处理唯一会话(一个用户会话)?