lex和yacc 入門-- 計算器

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;     }     ;

相關文章
相關標籤/搜索