為處理只輸入一個(gè)回車符的情況,bison中的起始符號(hào)會(huì)有一個(gè)空規(guī)則治筒。例如常見的寫法如下:
S : %empty
| S '\n'
| S Stmt '\n'
;
那么起始符號(hào)是否必須要有一個(gè)空規(guī)則呢屉栓?
個(gè)人理解,當(dāng)reduce得到起始符號(hào)S后耸袜,S會(huì)留在棧中友多,而不會(huì)被pop出去。所以每組輸入以回車符作為結(jié)束的話堤框,需要讀取的輸入包括以下4種情況:
- 第一次輸入夷陋,只輸入一個(gè)回車
- 非第一次輸入,只輸入一個(gè)回車
- 第一次輸入骗绕,輸入表達(dá)式和一個(gè)回車
- 非第一次輸入,輸入表達(dá)式和一個(gè)回車
那么對(duì)應(yīng)的規(guī)則是:
S : '\n'
| S '\n'
| Stmt '\n'
| S Stmt '\n'
;
這樣寫的話酬土,就不需要空規(guī)則了。