`
kaobian
  • 浏览: 209020 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

Antlr V3 编写的四则运算

阅读更多
这两天在研究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')+ ;


这里需要注意的是 对 四则运算符的 级别操作,“+”和“-”运算级别最低,“*”和“/“ 略高于 前者,括号的级别最高,那么我们可以把括号的级别和 数字 作为平级来调用。

2
0
分享到:
评论

相关推荐

    antlr实现四则运算源码

    antlr实现四则运算源码及其相关配置资料和jar包,基本实现了简单的四则运算

    ANTLR-v3整体语法

    ANTLR-v3整体语法 ANTLR-v3整体语法

    ANTLR-v3.ppt

    ANTLR v3 Overview (for ANTLR v2 users)

    ANTLR V3 语法解析工具

    强大的语法解析工具,可以方便的派生出一种新的语言,有图形界面。

    用ANTLR实现一个简单加法计算器

    CSDN博客上不能添加附件,将文件放在这里,以供有兴趣的下载 加法器分析的地址:http://blog.csdn.net/evenfall/archive/2010/10/31/5978379.aspx

    ANTLR-V3 ORACLE11G GRAMMAR

    基于antlr-V3版本的PL/SQL语法文件

    ANTLR指南(v3.0)第1~5章WORD版

    ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的...

    利用ANTLR编写的函数绘图语言解释器源码

    其中.g为ANTLR源文件,可生成语法分析器和语法树的.java文件,然后进行必要的修改(添加成员变量)。提供的.java文件已经修改好。直接放在项目里,选择主类Frame,编译运行即可。在窗口里输入测试文件的路径,即可绘...

    antlr 例子集 v3版

    antlr的示例代码 含各种语言的例子 。。。。。。。。。。。。

    antlr做的计算器

    antlr 计算器 可以实现简单的四则运算

    antlr第四章语法分析

    antlr指南 第四章语法分析 出自www.antlr.org.cn

    antlr中文济南

    antlr V3指南,带翻译,但是不太正确,需要对应英文进行阅读

    antlr4权威指南

     由于ANTLR能够自动生成语法分析树和树的遍历器,在ANTLR 4中,你无须再编写树语法。取而代之的是一些广为人知的设计模式,如访问者模式。这意味着,在学会了ANTLR语法之后,你就可以重回自己熟悉的Java领域来实现...

    antlr-2.7.7源码

    antlr 2.7.7源码,下载自:http://repo.spring.io/plugins-release/org/antlr/com.springsource.antlr/2.7.7/

    开源项目-antlr-antlr4.zip

    开源项目-antlr-antlr4.zip,antlr 4.6发布,支持go代码生成

    JavaEE源代码 antlr-2.7.6rc1

    JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源...

    The Definitive ANTLR Reference

    著名的ANTLR的作者为ANTLR3编写的官方教材,对于需要使用ANTLR进行编译器开发的人大有帮助。

    antlr-2.7.7.tar.gz

    ANTLR 1989-2006 Developed by Terence Parr @ University of San Francisco We reserve no legal rights to the ANTLR--it is fully in the public domain. An individual or company may do whatever they ...

    antlr4-runtime-4.2-API文档-中文版.zip

    赠送jar包:antlr4-runtime-4.2.jar; 赠送原API文档:antlr4-runtime-4.2-javadoc.jar; 赠送源代码:antlr4-runtime-4.2-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.2.pom; 包含翻译后的API文档:...

Global site tag (gtag.js) - Google Analytics