iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

C again系列 第 24

Bison (3)

  • 分享至 

  • xImage
  •  

前面提到 AST tree node 生成順序與 bison grammar match 順序的理解不太精確。

從 parse.y 看,program 會是 %start 預設的 rule,所以 parser 會從試著找 program 開始。因為 program 的 action 裡有前置動作,所以在產生的 parse.c 裡在 program 之上還有一段

  case 2: /* $@1: %empty  */
#line 1580 "../parse.y"
                   {
			SET_LEX_STATE(EXPR_BEG);
			local_push(p, ifndef_ripper(1)+0);
		    }
#line 9406 "parse.c"
    break;

而整個解析會在 match 到 program 時結束。雖然 program 會說是起始規則,但它是解析的終點。


上一篇
Bison (2)
下一篇
yycompile0
系列文
C again30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言