我正在學習龍書,迫不及待地寫了一個表達式解析器。解析算術表達式
爲了處理負數輸入,我的詞法分析器在滿足符號' - '時讀取數字以返回數字標記。
「-4 + 2」 會得到(-4號)(+,運營商)(2號)
但後來我發現,它不能做的事情一樣容易「4 2「,因爲
(4,數字)(-2,數字) 這是一個錯誤的語法。
我的解決方案之一是在評估表達式之前進行一些預處理,例如,如果第一個標記是減號,則附加零。 我想知道你們如何處理這種情況?
謝謝。
我正在學習龍書,迫不及待地寫了一個表達式解析器。解析算術表達式
爲了處理負數輸入,我的詞法分析器在滿足符號' - '時讀取數字以返回數字標記。
「-4 + 2」 會得到(-4號)(+,運營商)(2號)
但後來我發現,它不能做的事情一樣容易「4 2「,因爲
(4,數字)(-2,數字) 這是一個錯誤的語法。
我的解決方案之一是在評估表達式之前進行一些預處理,例如,如果第一個標記是減號,則附加零。 我想知道你們如何處理這種情況?
謝謝。
我詞法讀取時滿足符號位「 - 」返回一個負數
不要。一元運算符應該由解析器處理,而不是詞法分析器。
我的解決方案之一是在評估表達式之前進行一些預處理,例如,如果第一個標記是減號,則附加零。
編號修復問題。
當你在洞裏時,停止挖掘。
偉大的意見!謝謝! – babel92 2013-05-07 20:38:33
把它作爲'( - ,operator),(4,number),(+ operator),(2,number)'並判斷'-'是一元減數還是後面的二進制減法? – 2013-05-05 16:14:42