binson參數
-d
可以編寫token definition file-v
產生除錯檔案檔名.output
衝突
- shift/reduce conflicts
- reduce/reduce conflicts
與lex結合
透過在yacc的%union
定義數值,之後可以透過lex在分詞的時候定義
%union {
int intVar;
char *str;
}
此時可以保存整數
yylval.intVar = atoi(yytext);
字串的話採用
yylval.str = strdup(yytext);
yacc採用c++
參考該篇文章 在yacc中編寫c++,在lex編寫c。
或採用flex -+
方法生成c++檔案
常見問題
如果文法有問題
- 如if else嘗試看看拆分,如果
%prec
沒有作用。
yacc的action也會佔用一個索引。
書目
- o’reilly lex & yacc 中譯本
System Program