簡體   English   中英

Postfix表達式中的等於運算符

[英]Equal operator in Postfix expression

我正在用C ++評估postfix表達式。 一切工作正常,但我沒有正確管理= equal運算符。

導致中綴表達式的問題看起來像這樣: A = 2 + B = 5其中A和B是變量。 我的程序將其轉換為后綴為: 2 5 = B + = A

在我的程序中,我寫道, if current element is an equal operator followed by a variable then move the result in that variable. 這不是正確的方法,因為我的程序在解決上述表達式后給出B = 5A = 7 ,這從表達式看來似乎是錯誤的。

我應該遵循哪種技術來處理代碼的相等運算符?

就像評論說的那樣,您得到的答案與規則一致。 如果當前元素是一個相等的運算符,后跟一個變量,則將結果移動到該變量中

但是,該規則中有某些東西會破壞后綴符號的統一性,因此我寧願建議將該規則更改為

如果當前元素是賦值運算符,則將第一個操作數(所有)移動到第二個操作數(變量)

為了使此規則適用,您必須驗證最后一個標記(第二個操作數)是否為變量。

我提出的規則與其他操作一致。 例如,后綴表示法3 4 +轉換為3 + 4因為到掃描儀讀取+ ,它將采用最后兩個操作數34並將它們求和: 3 + 4 以同樣的方式進行3 4 + A =的操作,首先將3 + 4保存為第一個操作數,然后A作為第二個操作數,最后將第一個操作數移動到第二個A = 3 + 4 相反,您設計分配規則的方式很特殊,因為它首先讀取運算符= ,然后讀取第二個操作數A ,這將起作用,但與其余操作的方式不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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