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