簡體   English   中英

解析算術表達式

[英]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.

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