[英]Parsing arithmetic expressions
我正在研究《龍書》,迫不及待想要編寫一個表達式解析器。
為了處理負數輸入,我的詞法分析器在遇到符號“-”時會讀取數字以返回數字標記。
“ -4 + 2”將獲得(-4,number)(+,operator)(2,number)
但后來我發現它做不到像“ 4-2”一樣簡單的事情,因為
(4,number)(-2,number)這是錯誤的語法。
我的解決方案之一是在評估表達式之前進行一些預處理,例如,如果第一個標記為負號,則添加零。 我想知道你們如何處理這種情況?
謝謝。
您應該具有以下語法,但不能將"-" number
標記為令牌。
number := DIGIT+
unary := number
unary := "-" unary
expr := expr "+" unary
expr := expr "-" unary
...
由於存在一元表達式,因此它不是運算符優先語法。 您應該使用更復雜的解析器對其進行解析。
我的詞法分析器在遇到符號“-”時會讀取數字以返回負數
別。 一元運算符應由解析器而不是詞法分析器處理。
我的解決方案之一是在評估表達式之前進行一些預處理,例如,如果第一個標記為負號,則添加零。
否。解決問題。
當您陷入困境時,請停止挖掘。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.