lex 是自動生成詞法分析器的工具,經過輸入擴展名爲.l的文件,輸出詞法分析器的C 語言代碼。 express
flex是加強版的lex。 編程
yacc是自動生成語法分析器的工具,經過輸入擴展名爲.y的文件,輸出語法分析器的C語言代碼。 編程語言
bison是GNU項目所發佈的yacc的功能擴充版。 工具
myclac.l flex
myclac.y io
注意:默認在MAC上編譯會出現warning。須要在 編譯
#define YYDEBUG=1 擴展
下面添加 語法
int yyerror(char const *str);
int yylex(void); im
這2行。
同時該計算器不支持:-1+2 或者 2+-1 這種表達式
因此在
primary_expression
: DOUBLE_LITERAL
後面添加: | SUB DOUBLE_LITERAL { $$ = -1 * $2; } ;