antlr 语法报错解析
刚接触 antlr 的开发者可能会遇到最简单的计算语法报错。本文将深入探究一个简单的 antlr 语法示例,并解决遇到的语法错误。
错误信息
预处理的 antlr 语法如下:
grammar expr; prog: expr eof; expr: expr('*'|'/') expr #multiorp | expr('+'|'-') expr #addorsub | int #lieteral | '(' expr ')' #single ; newline : [ ]+ -> skip;
登录后复制
运行后,显示以下错误消息:
1:1 token recognition error at: '+' 1:3 token recognition error at: '*' 1:2 mismatched input '2' expecting {, '*', '/', '+', '-'}
登录后复制
原因分析
语法错误源于对 int 符号的未定义。在给定的语法中,int 未声明为一种令牌,因此 antlr 不知道如何识别它。
解决方案
要解决此问题,添加 int 令牌定义以下内容:
INT: ('0' | [1-9] (Digits? | '_'+ Digits));
登录后复制
此定义将 int 令牌定义为以 0 开头或以 1-9 之间的一个数字开头的数字,后面可以是任意数量的数字或下划线加数字。
结果
添加 int 定义后,antlr 将可以识别 int 令牌,并解析语法 دون出现错误。
以上就是ANTLR语法报错:为什么我的简单计算器语法无法识别数字?的详细内容,更多请关注抖狐科技其它相关文章!
-
美逛怎么解除邀请人 解除邀请人操作方法
在美逛中解除邀请关系如果您在美逛中使用过邀请功能,可能会遇到需要解除与邀请人的关联关系的情况。本文将详细介绍如何解除邀请关系,帮助您解决这一问题。php小编苹果在此提供了清晰易懂的分步指南,以便您轻松...
-
碧蓝档案黑子是第几章
《碧蓝档案》分为两周目,黑子线在一周目,玩家线在二周目,黑子线是主线,玩家线是支线。 两条线路之间有着紧密的联系,也有着巨大的差异。黑子线是一个悲惨的故事,玩家线是一个温馨的故事。黑子线中,许多角色都...
-
cad怎么设置快捷命令是什么
通过以下步骤设置 cad 快捷命令:打开自定义对话框,选择命令,分配快捷键,检查快捷键冲突,应用更改。使用有意义的快捷键并避免冲突。如何设置 CAD 快捷命令 步骤 1:打开自定义对话框单击菜单栏上的...
-
汽车发动机电脑控制系统故障及维修解决方案
汽车发动机电脑控制系统出现故障时,会影响车辆性能,甚至导致危险。面对这些故障,我们需要找到行之有效的解决方案。php小编小新为大家带来关于汽车发动机电脑控制系统故障的详细内容,介绍常見的故障类型、故障...
-
苹果xr微信在哪里修改支付密码
在苹果 xr上的微信中,可通过以下步骤修改支付密码:1. 打开微信app;2. 前往“钱包”;3. 选择“支付中心”;4. 前往“安全保障”;5. 点击“修改支付密码”;6. 验证身份;7. 设置新密...