日期:2014-05-17 浏览次数:20924 次
Parser Generator作为当前最好用的Windows环境LEX/YACC工具而被广泛应用。
之所以推荐它是因为它生成的c文件可以在vc++下通过编译。
下载地址?http://www.bumblebeesoftware.com/downloads.htm?
下载之后,解压缩,然后安装。
打开集成开发环境,选择项目“Project”菜单,在下拉菜单中选“LibBuilder”,弹出LibBuilder对话框
选择“属性”按钮弹出“compiler properties”对话框:
对于Microsoft Visual Studio6.0即VC6.0的设置
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的lib库。生成库文件在软件安装目录下的D:\Parser Generator 2\Cpp\Lib\msvc32目录下。
单独yacc文件的编译。
以下是一个单独的yacc文件,实现一个简单的计算器功能。
%{
/************************************************************
www.linmu100.com
************************************************************/
#include <ctype.h>
#include <stdio.h>
#define YYSTYPE double /* double type for YACC stack */
%}
%token NUMBER
%%
lines??? : lines expr '\n'??? ??? ??? { printf("%g\n", $2); }
??? ??? | lines '\n'
??? ??? | /* e */
??? ??? | error '\n'??? ??? ??? ??? { yyerror("reenter last line:"); yyerrok(); }
??? ??? ;
expr??? : expr '+' term??? ??? ??? ??? { $$ = $1 + $3; }
??? ??? | expr '-' term??? ??? ??? ??? { $$ = $1 - $3; }
??? ??? | term
??? ??? ;
term??? : term '*' factor??? ??? ??? { $$ = $1 * $3; }
??? ??? | term '/' factor??? ??? ??? { $$ = $1 / $3; }
??? ??? | factor
??? ??? ;
factor??? : '(' expr ')'??? ??? ??? ??? { $$ = $2; }
??? ??? | '(' expr