这两天在研究antlr这个框架,至于这个鸟东西如何解释,大家可以到他的官网上去看,2.7.5版本的还有中文版的帮助文档。好,我们直接说事,antlr的词法规则文件的保存内容是.g 结尾的文件。
四则运算的.g文件是:
grammar SiZe;
options{
backtrack=true;
}
@header {
package com.iteye.kaobian;
}
@lexer::header{
package com.iteye.kaobian;
}
prog returns [double value=0] :
e=highlevelexpr{$value=$e.value;}
( '+' e=highlevelexpr{$value += $e.value;}
| '-' e=highlevelexpr{$value -= $e.value;}
)*
;
highlevelexpr returns[double value] :
e=atom{$value=$e.value;}
(
'*' e=atom{$value*=$e.value;}
'/' e=atom{$value/=$e.value;}
)* ;
atom returns[double value] :
INT{$value = Double.parseDouble($INT.text);}
| FLOAT{$value = Double.parseDouble($FLOAT.text);}
| '(' prog ')' {$value=$prog.value;}
;
INT : '0'..'9'+
;
FLOAT
: ('0'..'9')+ '.' ('0'..'9')* EXPONENT?
| '.' ('0'..'9')+ EXPONENT?
| ('0'..'9')+ EXPONENT
;
WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
fragment
EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
这里需要注意的是 对 四则运算符的 级别操作,“+”和“-”运算级别最低,“*”和“/“ 略高于 前者,括号的级别最高,那么我们可以把括号的级别和 数字 作为平级来调用。
分享到:
相关推荐
通过理解和应用ANTLR4,开发者可以快速实现解析和处理结构化的文本输入,如四则运算表达式,而无需从头编写复杂的解析逻辑。这个示例提供了一个很好的起点,帮助学习者了解ANTLR4的工作原理和使用方法。
ANTLR-v3整体语法 ANTLR-v3整体语法
ANTLR V3 版本是ANTLR系列中的一个重要版本,提供了许多改进和新特性,比如支持左递归消除、改进的错误处理机制以及更强大的语法规则表达能力。 ANTLRWORKS是ANTLR的官方集成开发环境(IDE),专为ANTLR v3设计。它...
ANTLR v3 是对ANTLR v2 的一个重要升级,它引入了许多新特性和改进,以提高解析器的灵活性和性能。 1. **信息流(Info Flow)** 在ANTLR v3中,信息流的概念是设计解析器和语法的一个关键部分。它描述了输入数据...
ANTLR V3是ANTLR的一个版本,它提供了改进的语法规则定义方式和更高效的解析器生成。 Oracle 11g是Oracle公司的一个关系数据库管理系统,其内部使用了PL/SQL,一种结合了SQL和过程编程的语言,用于编写存储过程、...
通过这些示例,学习者可以理解ANTLR的工作原理,掌握如何定义语法规则,编写词法分析器和解析器,以及如何生成目标代码。这些实例是学习ANTLR的宝贵资源,帮助开发者快速上手并应用于实际项目中。
CSDN博客上不能添加附件,将文件放在这里,以供有兴趣的下载 加法器分析的地址:http://blog.csdn.net/evenfall/archive/2010/10/31/5978379.aspx
ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的...
其中.g为ANTLR源文件,可生成语法分析器和语法树的.java文件,然后进行必要的修改(添加成员变量)。提供的.java文件已经修改好。直接放在项目里,选择主类Frame,编译运行即可。在窗口里输入测试文件的路径,即可绘...
在编程领域,四则混合运算是一项基础但重要的任务,它涉及到加法、减法、乘法和除法的组合计算。在C#中,实现四则混合运算通常需要理解算法和数据结构,特别是二叉树和栈的概念。下面将详细阐述如何使用C#来实现这一...
在这个“ANTLR做的计算器”项目中,我们将探讨如何使用ANTLR来实现一个简单的四则运算计算器。 ANTLR工作原理的核心是通过定义语法规则(Grammar)来识别特定的语言结构。在四则运算计算器的例子中,我们需要定义...
antlr指南 第四章语法分析 出自www.antlr.org.cn
ANTLR V3 是ANTLR的一个版本,提供了对DSL(领域特定语言)设计的强大支持。ANTLR的工作流程通常包括以下步骤: 1. **定义语法规则**:使用ANTLR提供的语法描述语言(通常为ANTLR自己的语法)编写语法规则。 2. **...
在使用ANTLR时,开发者需要编写语法规则文件(通常扩展名为.g或.grammar),这个文件定义了输入语言的语法规则。ANTLR会根据这些规则生成相应的解析器和词法分析器源代码,然后将这些源代码编译成Java类,最后在项目...
在编译原理课程设计中,实现四则混合运算是一项典型的任务,它涵盖了编译器设计的核心环节:词法分析、语法分析、语义分析以及代码生成。本项目以Java语言为基础,同时也涉及到汇编代码的实现,使得学习者能够深入...
1. **语法定义**:用户使用ANTLR提供的语法描述语言(通常称为ANTLR语法规则)编写一个输入语言的语法规则文件(例如,ANTLR的.g文件)。 2. **生成解析器和词法分析器**:ANTLR读取这个语法规则文件,然后自动生成...
1. **定义语法规则**:编写ANTLR语法规则文件(通常扩展名为.g或.gram),定义你想要解析的语言结构。 2. **生成解析器和词法分析器**:ANTLR工具会根据语法规则文件生成相应的解析器和词法分析器类。对于Java,这些...
词法分析器(也称为分词器或词法器)将输入分解为一个个的词法单元,而语法分析器则将词法单元组合成符合语法规则的抽象语法树(AST)。 在Antlr初阶使用.pptx这个文件中,可能包含了以下内容: 1. **ANTLR的基本...
解析器处理输入的语句,词法分析器则将输入分解成一个个的标记(tokens)。 3. **目标语言生成**:ANTLR支持多种目标语言,包括Java、C#、Python、JavaScript等,以及新增的Go语言。这意味着生成的解析器和词法分析...