2010-02-20 38 views
0

如何在javacc中創建一個採用有理數並計算其值的'Rational'標記。敵人例如'2/5'值= 0.4。我知道如何爲此寫一個正則表達式,但不知道,也從來沒有被正確地教過,如何/在哪裏將java方法結合到javacc代碼中。我被告知:Javacc中的'Rational'標記

請注意,分母爲0的有理數未定義。如上所示,而不是產生錯誤, 打印無窮大。 建議:您可以按照 的順序使用Java String類中的indexOf和substring方法來提取有理數的分子和分母部分。 定義第二個變量(例如val2)以便存儲分母的值是個好主意。此外,鑄造 劃分的結果,即(雙)val/val2加倍。

請記住,我是javacc新手,但擁有java的基本知識。任何意見在這個問題將不勝感激。非常感謝。

回答

0

如果沒有涉及到選擇分你的語法裏,你可以使用下面的語法問題:

JAVACODE 
void parse_rational() { 
    Token num, den; 
    num = getToken(1); // first value 
    getNextToken(); // trash fract symbol 
    den = getToken(1); // second value 

    /* do whatever you want */ 
} 

但是,這種方法使得JavaCC的想起「令牌」 parse_rational作爲一個黑盒子,這就是爲什麼在選擇使用它(例如:S(): { parse_rational() | SomethingElse }這不是好

我不知道,如果你需要寫一個完整的編譯器,或只是一小部分解析器,如果答案是第二個這個東西可以工作得非常好..。