1
我创建了adder.jj
文件,遵循this教程(直到第13页,就在它以计算器为例)之前,创建一个加法器,该加法器非常适合以语法方式获得数字和加号的结果(例如“4 +3 +7“返回14,而”4 ++ 3“给出错误),那些数字和+符号来自文本文件(稍后将对此进行解释)。 我用来生成所需的类来执行之前解释的代码。如何更改javaCC adder.jj以接收来自命令提示符的字符串而不是流?
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
具有我之前解释过的格式。
如何更改此代码以接收字符串,以便在项目中实际使用它而不是从命令行中的流?
我试过了,它说以下 'Adder.java:7更换
:错误:无法找到符号 读卡器读卡器=新StringReader(” 4 + 2 + 88“); ^ symbol:class Reader location:class Adder Adder.java:7:error:can not find symbol Reader reader = new StringReader(“4 + 2 + 88”); ^ 符号:类StringReader 位置:类加法 2 errors' 另外蚀说,不承认StringReader我进口的java.io.Reader即使 – newbie
对不起,我不得不进口 '进口的java.io.Reader; import java.io.StringReader;' 在Adder.java生成的类 它的工作原理!非常感谢,现在我只需要改变它就可以使用不同于main的静态方法! – newbie