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

仿 SQL 查詢分析器的 C# 計算器(十):語法分析堆疊狀態圖解(步驟 1-3)

     編輯:關於C語言

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

文字描述可能不清晰,涉及迴圈與遞歸操作,以下用例子講解。

1. 列表分析狀態:

TokenValue(3) TokenMultiply TokenValue(7) …

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

TokenValue(3)  棧底

堆疊對應樹狀圖:

2. 列表分析狀態:

TokenValue(3) TokenMultiply TokenValue(7) …

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

TokenMultiply  棧底

堆疊對應樹狀圖:

3. 列表分析狀態

… TokenMultiply TokenValue(7) TokenPlus …

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

TokenMultiply  棧底

堆疊對應樹狀圖:

—

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved