首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

仿 SQL 查詢分析器的 C# 計算器(三)補充:記號分類與 TokenValue、TokenMethod、TokenSymbol 衍生架構

     編輯:關於C語言

設計出基類 TokenRecord 後,其他記號類別皆可繼承並實作特定計算方法。實際運算式中有哪些類型記號?分析得出:關鍵字、運算子、字串、數值四大類。

  • 關鍵字: if、sin、cos、true、false、pi 等以英文字母開頭的詞,可包含數字或其他允許符號。
  • 運算子: +、-、*、/、\、>、<、>=、<=、&&、||、! 等純符號元素,可由多字元組成。
  • 字串: "hello"、'good'、"where's my book" 等,由單雙引號標識。允許包含另一種引號,若包含當前引號需用雙引號轉義。
  • 數值: 12、856、42.123、-62.45,允許小數點與負號(負號處理在某些情況下有誤,有興趣可自行完善)。

字串與數值相似:不需計算,只作為儲存單元。合併為值記號物件 TokenValue。其他記號物件在 Execute 實作演算法,TokenValue 的 Execute 不做任何操作。

依分類從 TokenRecord 衍生:TokenValue(字串/數值)、TokenMethod(方法類,抽象,對應部分關鍵字)、TokenSymbol(運算子,抽象)。類別圖:

再衍生出更多具體類別:TokenIf、TokenSin、TokenCos、TokenPlus、TokenMinus 等。

以運算式 23.5+(54/3-9)*2 為例,分析出的 TokenList 如下:

記號物件對應運算式
TokenValue23.5
TokenPlus+
TokenLeftBracket(
TokenValue54
TokenDivide/
TokenValue3
TokenMinus-
TokenValue9
TokenRightBracket)
TokenMultiply*
TokenValue2
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved