一、介紹
只要在Unix環境中寫過程序,必定會邂逅神秘的Lex&YACC,就如GNU/Linux用戶所熟知的Flex&Bison,這里的Flex就是由Vern Paxon實現的一個Lex,Bison則是GNU版本的YACC,在此我們將統一稱呼這些程序為Lex和YACC,所以我們將用Flex和Bison來嘗試下我們的實例。
二、准備工作(win7)
① 下載flex和bison並安裝到D:\GnuWin32(盡量是根目錄)
② 由於我們使用的flex和bison都是GNU的工具,所以為了方便,采用的C/C++
編譯器也 采用GNU的編譯器GCC,當然我們需要的也是Windows版本的GCC了。所以選用了CodeBlocks編譯器
三、課本實例
① 按課本代碼輸入,並保存為yac1.y,並將其放到bison所在目錄
② 打開cmd命令行,然后進入D盤中bison所在目錄下,然后輸入命令行bison yac1.y對文件進行解析,生成yac1.tab.c文件
③ 用CodeBlocks編譯器打開yac1.tab.c文件,進行編譯運行
④ 測試結果:

四、遇到問題
①int yylex(void)函數中改為int yylex(),因為后面需要返回數值,void為空,則得不到結果
②void yyerror(char *s)改為int yyerror(char *s),必須和前面的類型統一
③mian()中的if(i=0)改為if(i!=1),不然無論對錯都一直會是提示錯誤
