6
這比一個實際的問題更像是一個「原則上」的問題。是Yacc減少生產的順序,並從定義的詞法分析器中讀取新的標記。也就是說,如果我有以下設置令牌:是否在Yacc中定義了約簡的順序?
INTEGER_BEGIN
INTEGER_VALUE
LESS_THAN
INTEGER_BEGIN
INTEGER_VALUE
能Yacc的,它的語義中,讀取來自詞法分析器的LESS_THAN
令牌,它給定一組作品的降低INTEGER BEGIN INTEGER_VALUE
前一個單一的東西,:
expr : expr LESS_THAN expr
| integer
integer : INTEGER_BEGIN INTEGER_VALUE
如果這些變化是通過語義動作定義的,請執行此更改的規則嗎?
有什麼方法可以知道這是否發生? –
http://www.gnu.org/software/bison/manual/html_node/Default-Reductions.html包含默認縮減的語義的完整描述,並且,正如您注意到的,會導致詞法分析器的延遲調用。 –
在一些野牛版本中,你可以在動作中檢查'if(yychar == YYEMPTY)',看看你是否處於默認縮減(所以沒有讀過預讀),但這不是非常便攜的。 –