簡體   English   中英

如何更改javaCC adder.jj以從命令提示符接收字符串而不是流?

[英]How can I change javaCC adder.jj to receive a String instead of a stream from command prompt?

我按照教程(直到第13頁,以計算器示例開始之前)創建了adder.jj文件,以創建一個加法器,該加法器非常適用於以語法正確的方式獲取數字結果和加號(例如“ 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的內容具有我之前解釋的格式,則提供正確的輸出。

如何更改此代碼以接收字符串,以便實際上可以在項目中使用它而不是從命令行使用流?

嘗試更換

Adder parser = new Adder (System.in) ;

Reader reader = new StringReader( someString ) ;
Adder parser = new Adder( reader ) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM