作者swatches (菇)
看板C_and_CPP
标题[心得] Lex&Yacc与Visual C++的整合
时间Wed Feb 1 18:58:12 2006
前言
Lex&Yacc是在UNIX-LIKE的系统下很常见的工具,不过可能很多人都不知道
Lex&Yacc的用处,希望可以藉由我的这篇文章,让大部分的人可以在WIN32下使用
Lex&Yacc这个美好的工具XD。
有学过系统程式的人应该会知道COMPILER-COMPILER,意思是可以做COMPILER
的COMPILER,他最大的功用就是可以帮助你切TOKEN(lexical analyse)还有做
GRAMMAR的分析(syntax analyse),TOKEN的定义可以用REGULAR EXPRESSION(正规
表示式)来描述,如果还不清楚我说什麽的人,可以参考O`REILLY的Lex&Yacc(中
译本)。
目前C/C++编译器种类甚多,不过我还是选用我最熟悉的Visual C++ 6。
==========================================================================
安装与设定Parser Generator
事实上,Lex&Yacc的实作有很多,我选用的是Bumble-Bee Software的版本:
http://www.bumblebeesoftware.com/ Bumble-Bee Software的网页
http://www.bumblebeesoftware.com/pargen.zip 程式下载
如果不是商业用途的话,它应该是FREE的。
下载之後,解压缩,然後安装。打开Parser Generator这个IDE,点Project选单,在
下拉选单中选LibBuilder,弹出LibBuilder对话框选择属性按钮
弹出compiler properties 对话框,
Name 选择Visual C++ (32-bit)
Directory :msvc32
options:
依次为
vc++版本(Versoin 6)。
是否支持unicode码。
是否把w_char_t作为内建类型。
下边是VC的各种目录:
依次为
Compiler Bin Directory:
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\BIN)
Compiler Bin Directory(2):
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\COMMON\MSDEV98\BIN)
Compiler Include Directory:
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\INCLUDE)
Compiler Include Directory(2):
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\INCLUDE)
Compiler Library Directory:
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\LIB)
Compiler Library Directory(2):
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\LIB)
注意:括号里面的是我自己编译器安装目录,也许你的和我的不一样,需要做适当的
调整。
所有的这些设定完成之後点ok。返回LibBuilder,点Build就可以编译vc++使用的lex
与yacc的函式库,花一点时间等待它编译完成。
==========================================================================
设定Visual C++
现在开启VC++,然後依序点选Tools -> Options,然後点选Directories那一页
,在各种档案的目录下加入以下的路径:
Executable files:
C:\PROGRAM FILES\PARSER GENERATOR 2\BIN
Include files:
C:\PROGRAM FILES\PARSER GENERATOR 2\CPP\INCLUDE
Library files:
C:\PROGRAM FILES\PARSER GENERATOR 2\CPP\LIB\MSVC32
Source files:
C:\PROGRAM FILES\PARSER GENERATOR 2\CPP\SOURCE
接下来的部分我偷一下懒^^a,我只会提及比较重要的部份
详细的Project Settings请去看Parser Generator的help
<Setup Visual C++ Version 4.0 and Above>
开启一个新的Project之後
在Project Settings的DEBUG设定必须在
C/C++ tab -> Preprocessor Definitions box 原本内容的後面加入 ",YYDEBUG"
Link tab -> Object/Library Modules box 原本内容的後面加入 " yld.lib"
如果是要用release版本的话,必须修改一点上面的设定(选不同的LIBRARY)。
如果想在vc中直接编辑而且编译LEX&YACC的SOURCE CODE的话,可以看
<Compile YACC and Lex Source Files with Visual C++ Version 5.0 and Above>
这篇help
==========================================================================
开始使用Parser Generator
在Parser Generator的IDE中,选Project -> ParseWizard,然後language选"C"
其他的设定就按下一步。
将产生的.l和.y档经由PG编译後,会产生两个.CPP和两个.H的档
把她们加入VC的新Project中(别忘了要对project做上述设定)。
然後编译看看,如果成功的话应该就OK了,接下来就可以参考O`REILLY的书在WIN32
下写lex和yacc的程式了
==========================================================================
後记
首先先和看完这篇文章的人说抱歉,因为写的很偷懒,原因是快考试了,可是又
想把自己的心得PO出来,所以看完了还觉得不清楚的人可以写信问我,或是写的有错
还是有lex和yacc语法的问题,也可以问我,有时间的话我一定会解答的。^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.101.216
1F:推 UNARYvvv:推~分享是好事情啊~ 02/01 20:07
2F:推 endl:推~ 02/01 21:10
3F:推 Colac:大推!!! 02/01 22:57
※ 编辑: swatches 来自: 211.74.101.216 (02/01 23:17)
4F:推 qrtt1:推...倒.. 02/02 08:48
5F:→ swatches:有人可以试一下VC7.NET的吗?...考完试想玩一下.NET的VC 02/02 11:26
※ 编辑: swatches 来自: 59.105.105.94 (02/02 12:54)
※ crazying:转录至看板 NTUGIEE_EDA 02/06 22:32
6F:推 LoveCheer:push 04/16 21:49