程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用C#設計與實現一個四則算術運算解釋器(2)

用C#設計與實現一個四則算術運算解釋器(2)

編輯:關於C語言
在來解說下這個解釋器的原理。

一、輸入和輸出

輸入是一個用字符串表達的四則運算,比如 1 + 2 * 3 。目的是試圖去理解這個字符串表達的運算指令,然後計算出結果 7。之所以是一個解釋器 Interpreter,而不是一個編譯器 Compiler,是因為程序是去理解指令並且執行指令,而不是把指令編譯成機器代碼來運行;後者是編譯器的目標。

在解釋的過程中,要能夠分辨出不合法的指令:比如非法的字符 abc,非法的數字 2.3.1.4,非法的運算指令 2 * + 3,還有等等。

整個程序可以分為兩個部分:

第一個部分,是截取輸入字符串,然後返回單元指令。比如,對於指令 1 + 2 * 3 – 4 / 5,就需要被分解成如下所示的單元指令集:

第二個部分,是把單元指令集(上圖橙色包含部分)組成一個樹結構,稱之為 Abstract Syntax Tree。按照將來需要解釋的順序,優先執行的指令會放在樹的葉的位置,最後執行的指令會是樹的根 Root。

在上圖所示的 Abstract Syntax Tree 中,最先執行的指令是位於樹上最深的子樹,也就是 * ,然後是第二級的 + 和 / ,最後執行的位於根的指令 – 。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved