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

可配置語法分析器開發紀事(三點五):生成下推自動機具體步驟勘誤

     編輯:關於C++

勘誤緣起

上篇狀態機圖繪製有誤,特發勘誤記錄教訓:分析務必一步步來,不可跳步。

正確構造步驟演示

文法:ID = NAME; IDList = ID | IDList "," ID

  1. 初始 NFA:直接從文法產生,含非終結符跳轉。
  2. Shift/Reduce 連接:非終結符邊替換為 shift(S)/pop(S) reduce ε-邊。起始棧含 Null 標記底部。
  3. 左遞歸處理:IDList → IDList "," ID 產生 shift 環,從 ID1 連 IDList2 並補 假shift IDList0。
  4. 清理無用狀態/邊:得到純終結符轉移的確定性下推自動機,等價於正則 NAME ("," NAME)*。

模擬解析 A,B,C$

狀態轉換與棧操作完美匹配,最終到達 FINISH 棧空輸入盡,解析成功。

解析軌跡

下一篇將講確定化算法與 Lookahead 處理。

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