一个Lex/Yacc完整的示例(可使用C++)
作者: 胡彥 2013-4-28
代碼下載地址:http://pan.baidu.com/share/link?shareid=579088&uk=253544182
本框架是一個lex/yacc完整的示例,包括詳細的注釋,用于學習lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以編譯和執行。大部分框架已經搭好了,你只要稍加擴展就可以成為一個計算器之類的程序,用于《編譯原理》的課程設計,或者對照理解其它lex/yacc項目的代碼。
本例子雖小卻演示了lex/yacc程序最重要和常用的特征:
本例子功能是,對當前目錄下的file.txt文件,解析出其中的標識符、數字、其它符號,顯示在屏幕上。linux調試環境是Ubuntu 10.04。
文件列表:
lex.l: lex程序文件。 yacc.y: yacc程序文件。 main.h: lex.l和yacc.y共同使用的頭文件。 Makefile: makefile文件。 lex.yy.c: 用lex編譯lex.l后生成的C文件。 yacc.tab.c: 用yacc編譯yacc.y后生成的C文件。 yacc.tab.h: 用yacc編譯yacc.y后生成的C頭文件,內含%token、YYSTYPE、yylval等定義,供lex.yy.c和yacc.tab.c使用。 file.txt: 被解析的文本示例。 README.txt: 本說明。
下面列出主要的代碼文件:
?main.h: lex.l和yacc.y共同使用的頭文件?
lex.l: lex程序文件
yacc.y: yacc程序文件
Makefile: makefile文件
?file.txt: 被解析的文本示例
使用方法:
1-把lex_yacc_example.rar解壓到linux/cygwin下。
2-命令行進入lex_yacc_example目錄。
3-敲入make,這時會自動執行以下操作:
(1) 自動調用flex編譯.l文件,生成lex.yy.c文件。
(2) 自動調用bison編譯.y文件,生成yacc.tab.c和yacc.tab.h文件。
(3) 自動調用g++編譯、鏈接出可執行文件main。
(4) 自動執行main。
運行結果如下所示:
參考資料:《Lex和Yacc從入門到精通(6)-解析C-C++包含文件》http://blog.csdn.net/pandaxcl/article/details/1321552
其它文章和代碼請留意我的blog: http://blog.csdn.net/huyansoft
[END]
總結
以上是生活随笔為你收集整理的一个Lex/Yacc完整的示例(可使用C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gcc undefined refere
- 下一篇: 三个最简单公式讲完卡尔曼滤波算法