程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 仿查詢分析器的C#計算器——4.語法分析(2)

仿查詢分析器的C#計算器——4.語法分析(2)

編輯:關於C語言

2.棧頂TokenRecord的優先級低於當前TokenRecord的優先級,則將當前TokenRecord直接壓棧。

可能文字表述的並不清晰,其中涉及到循環和遞歸的操作,具體的過程通過下面的例子來講解。

1.列表分析狀態:

TokenValue(3) TokenMultiplay TokenValue(7) …...

堆棧分析:當前堆棧為空,將當前分析的TokenRecord壓棧。

TokenValue(3) 棧底

堆棧對應樹視圖:

2.列表分析狀態:

TokenValue(3) TokenMultiply TokenValue(7) …...

堆棧分析:棧頂為TokenValue,當前TokenRecord為TokenMultiply,TokenValue優先級最高。遵循高出低入原則,將TokenValue彈棧並添加 到TokenMultiply的ChildList中,然後將TokenMultiplay壓棧。

TokenMultiply 棧底

堆棧對應樹視圖:

3.列表分析狀態

…... TokenMultiply TokenValue(7) TokenPlus …...

堆棧分析:棧頂為TokenMultiplay,當前TokenRecord為TokenValue,TokenMultiply優先級高於TokenValue,則將TokenValue加入 TokenMultiplay的ChildList中。

TokenMultiply 棧底

堆棧對應樹視圖:

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