我花了 6 個小時用 Lex 和 Yacc 為下面的產品撰寫編譯器。終端報告warning: empty rule for typed nonterminal, and no action,但我仍然無法找出我的代碼有什么問題。
P -> L | LP
L -> S
S -> ID = E | if C the S | if C then S else S
C -> E>E | E<E | E=E
E -> E T | E-T | T
T -> F | T*F | T/F
F -> (E)| ID
yacc部分代碼
lex 部分代碼
uj5u.com熱心網友回復:
您收到的警告似乎完全準確:
F: | …
F是非終結符;它有一個型別,第一個選擇是空的,沒有任何動作。如果非終端有一個沒有動作的產生式,bison 會自動添加動作$$ = $1,但它不能為空產生式添加,所以它會抱怨。
我認為|那一行是一個錯字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473570.html
上一篇:如何用bs4替換html中的標簽
