浅谈利用antlr写一个小作业1

本文介绍使用ANTLR库在Java环境中构建一个简易计算器的过程。从ANTLR的安装配置开始,逐步讲解如何定义语言文法、生成解析器及词法分析器,并演示了一个具体的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bison和flex已经是上个世纪的东西了~

antlr是一个java程序编写的库,用来帮助编程语言创作者提升语言实现效率,具体的可以访问http://www.antlr.org 细看,我们可以到网站上下载我们所需要的的jar包,antlr-4.0-complete.jar,我们可以把这个放到目录E:\antlr下,下文所有文件都放到该目录下。

Windows下路基配置方法为在运行模式下执行如下命令(注意有个点,千万不能漏掉;运行窗口不关闭,否则下面配置的系统变量会失效):

SET CLASSPATH=.;E:\antlr\antlr4-complete.jar;%CLASSPATH%


我主要讲一个用antlr实现一个简单的计算器。

首先我们看下我们打算输入的数据E:\antlr\t.expr:

193
a = 5
b = 6
a+b*2
(1+2)*3

对应的lex rule和paser rule,E:\antlr\Expr.g4如下:

grammar Expr;

prog:  stat+ ;
/** The start rule; begin parsing here. */

stat: expr NEWLINE
 | ID '=' expr NEWLINE
 | NEWLINE
 ;

expr: expr ('*'|'/') expr
 | expr ('+'|'-') expr
 | INT
 | ID
 | '(' expr ')'
;

ID : [a-zA-Z]+ ; // match identifiers
INT : [0-9]+ ; // match integers
NEWLINE:'\r'? '\n' ; // return newlines to parser (is end-statement signal)
WS : [ \t]+ -> skip ; // toss out whitespace
大家可以发现,这里只有rule没有如何计算的东西,这是因为我们只打算用这一部分生成代码框架,具体如何处理之后自己再填写。

在上面提到的运行重口中执行以下命令:

java org.antlr.v4.Tool Expr.g4

javac Expr*.java

java org.antlr.v4.runtime.misc.TestRig Expr prog -gui t.expr

看到一个窗口,表示这时我们已经完成了一半~

下一半,下次讲~


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值