首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在9-9运算中写出区分-9和-运算符的词法规则?

如何在9-9运算中写出区分-9和-运算符的词法规则?
EN

Stack Overflow用户
提问于 2019-04-10 06:46:46
回答 1查看 31关注 0票数 1

我正在为计算器应用程序使用Antlr4编写一个简单的表达式解析器。我不知道如何写一个区分数字-9和算术表达式9-9的语法。

这是我的语法expression.g4:

代码语言:javascript
运行
复制
grammar expression;

expression = expression ADDOPER expression
             | expression SUBOPER expression
             | NUMBER;

/* lexical rules */
ADDOPER     :'+';
SUBOPER     :'-';

NUMBER         : -?[1-9]+ [0-9]*('.'DIGIT+)? |'0'?('.'DIGIT+) |'0' ;

上面的语法问题是,它在算术表达式-9中将9 - 9匹配为数字,但它被认为是完全算术运算。

但是-9 + 9工作得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 07:36:21

-9只是一种表达。所以,只需这样做:

代码语言:javascript
运行
复制
expression
 : SUBOPER expression
 | expression ADDOPER expression
 | expression SUBOPER expression
 | NUMBER
 ;

并从您的-中删除NUMBER

代码语言:javascript
运行
复制
NUMBER
 : [1-9] [0-9]* ( '.'DIGIT+ )? 
 | '0'? '.' DIGIT+ 
 | '0' 
 ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55606311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档