2011-02-27 66 views
1

我試圖用Shunting Yard(SY)算法解析語法。語法包括下列命令(他們有很多很多人雖然!)試圖編寫解析器

a + b // a and b are numbers 
setxy c d //c,d can be numbers 
setxy c+d b+a //all numbers 

從本質上講,setxy是一個功能,但它並不期望任何函數參數的分隔符。由於缺少parens和函數參數分隔符,這使得通過SY執行非常困難(不可能?)。

任何想法,如果SY可以用來解析無括號/函數參數無分隔符函數,或者我應該移動到不同的分析算法?如果是這樣,你會推薦哪一個?

謝謝! djs22

回答

2

定義了正確的語法後,您可以爲您生成解析器http://www.antlr.org/。是否合適的解決方案取決於你的作業「要求」。

至少你可以生成它並在裏面尋找一些提示。

+0

解析器發生器的輸出通常不適用於心髒模糊。 – delnan 2011-02-27 18:39:56

+0

關於調試器輸出的更多信息 - 可能會提供一些有關該過程的提示 – bushed 2011-02-27 18:45:51

-2

我不完全理解你在做什麼,但也許你可以使用一些正則表達式?你想做什麼編寫一個簡單的命令行程序?

+7

用「正則表達式」回答「解析器」是解析算法的嘲弄。 – delnan 2011-02-27 17:46:37

+0

這將作爲評論更有意義。 – Oded 2011-02-27 17:48:13

+0

我提供了我的程序需要解釋的許多命令的一小部分。考慮到規範的其他部分,命令行程序並不合適(我沒有詳細說明,因爲它無關/我不想欺騙我的主板)。 – djs22 2011-02-27 17:50:06