win10环境使用LEX实现词法分析
一、安装配置Parser Generator1.安装Parser Generator->百度云下载地址2.安装vc6.0->百度云下载地址3.安装完后,先打开Parser Generator,Project->LibBuilder,双击Visual c++(32-bit),出现如下弹窗:4.options里的设置如下: - Complier Version: Version6- Unicode: True- Treat wchar_t as Built-in Type: Fasle- Complier Bin Directory: vc安装目录..\MICROSOFT VISUAL STUDIO\VC98\BIN- Complier Bin Directory(2): vc安装目录..\MICROSOFT VISUAL STUDIO\COMMON\MSDEV98\BIN- Complier Include Directory: vc安装目录..\MICROSOFT VISUAL STUDIO\VC98\INCLUDE- Complier Include Directory(2): vc安装目录..\MICROSOFT VISUAL STUDIO\VC98\MFC\INCLUDE- Complier Library Directory: vc安装目录..\MICROSOFT VISUAL STUDIO\VC98\LIB- Complier Library Directory(2): vc安装目录..\MICROSOFT VISUAL STUDIO\VC98\MFC\LIB5.新建项目: Project->ParserWizard,一路下一步,按默认即可6.在mylexer.l里写如下示例代码: %{ #include <stdio.h> #include <stdlib.h>%}/*difine*/IF ifTHEN thenELSE elseWHILE whileBEGIN beginEND endINT [0-9]+FLOAT {INT}[\.][0-9]+REAL {FLOAT}([e|E][+|-][0-9]+)ID [a-zA-Z]+[0-9a-zA-Z]*LE [<][=]GE [>][=]NE [<][>]EQ [=]LT [<]GT [>]IS [:][=]PL [\+]MI [-]MU [\*]DI [\/]%%{IF} {printf("(IF, )\n");}{THEN} {printf("(THEN, )\n");}{ELSE} {printf("(ELSE, )\n");}{WHILE} {printf("(WHILE, )\n");}{BEGIN} {printf("(BEGIN, )\n");}{END} {printf("(END, )\n");}{ID} {printf("(ID, '%s')\n",yytext);}{REAL} {printf("(REAL, %g)\n",atof(yytext));}{FLOAT} {printf("(REAL, %s)\n",yytext);} {INT} {printf("(INT, %s)\n",yytext);}{LE} {printf("(LE, )\n");}{GE} {printf("(GE, )\n");}{NE} {printf("(NE, )\n");}{EQ} {printf("(GQ, )\n");}{LT} {printf("(LT, )\n");}{GT} {printf("(GT, )\n");}{IS} {printf("(IS, )\n");}{PL} {printf("(PL, )\n");}{MI} {printf("(MI, )\n");}{MU} {printf("(MU, )\n");}{DI} {printf("(DI, )\n");}[ \t\n]+ ; /* ignore whitespace */[!-~]+ { printf("Invalid input: %s\n",yytext); } %%void main(){ yyin=fopen("E:\\example.txt","r"); yylex(); fclose(yyin); system("PAUSE");}//必须要包含的函数int yywrap(){ return 1;}然后Project->Complie File, 如果为灰色,则先Rebuild All,稍等片刻,再Complie File编译成功页面如下: ...