【发布时间】:2018-03-04 11:45:59
【问题描述】:
我在this 教程之后创建了adder.jj 文件(直到第 13 页,就在计算器示例开始之前),以创建一个加法器,该加法器非常适用于获取数字的结果和加号在语法上正确方式(例如“4+3 +7”返回 14,而“4++3”给出错误),这些数字和 + 符号来自文本文件(稍后解释)。
我用来生成所需类的代码来执行前面解释的操作。
options
{
STATIC = false ;
}
PARSER_BEGIN(Adder)
class Adder
{
public static void main (String[] args)
throws ParseException, TokenMgrError, NumberFormatException
{
Adder parser = new Adder (System.in) ;
int val = parser.Start() ;
System.out.println(val) ;
}
}
PARSER_END(Adder)
SKIP : { " " }
SKIP : { "\n" | "\r" | "\r\n" }
TOKEN : { < PLUS :"+"> }
TOKEN : { < NUMBER : (["0"-"9"])+ > }
int Start() throws NumberFormatException :
{
int i ;
int value ;
}
{
value = Primary()
(
<PLUS>
i = Primary()
{ value += i ; }
)*
{ return value ; }
}
int Primary() throws NumberFormatException :
{
Token t ;
}
{
t=<NUMBER>
{ return Integer.parseInt( t.image ) ; }
}
类是用
生成的javacc adder.jj
然后我用
编译生成的类javac *.java
最后
java Adder < ex1.txt
如果ex1.txt 的内容具有我之前解释的格式,则给出正确的输出。
如何更改此代码以接收字符串,以便我可以在我的项目中实际使用它而不是命令行中的流?
【问题讨论】: