flex詞法分析器是替代lex的免費開源軟體。它是一個生成詞法分析器(也稱為“掃瞄器”或“詞法分析器”)的電腦程式。它經常在BSD派生的作業系統上與Berkeley Yacc解析器生成器一起用作lex實現(因為lex和yacc都是POSIX的一部分),或者與GNU bison(一個版本的 yacc)在* BSD連線埠[8]和Linux發行版中。 與Bison不同,flex不是GNU項目的一部分,也不是根據GNU通用公共許可證發布的。
基本介紹
- 中文名:flex詞法分析器
- 外文名:fast lexical analyzer generator
- 提出時間:1987
- 作者:Vern Paxson
- 本質:是一個生成詞法分析器
歷史
實例
%{#include "y.tab.h"%} digit [0-9]letter [a-zA-Z] %%"+" { return PLUS; }"-" { return MINUS; }"*" { return TIMES; }"/" { return SLASH; }"(" { return LPAREN; }")" { return RPAREN; }";" { return SEMICOLON; }"," { return COMMA; }"." { return PERIOD; }":=" { return BECOMES; }"=" { return EQL; }"<>" { return NEQ; }"<" { return LSS; }">" { return GTR; }"<=" { return LEQ; }">=" { return GEQ; }"begin" { return BEGINSYM; }"call" { return CALLSYM; }"const" { return CONSTSYM; }"do" { return DOSYM; }"end" { return ENDSYM; }"if" { return IFSYM; }"odd" { return ODDSYM; }"procedure" { return PROCSYM; }"then" { return THENSYM; }"var" { return VARSYM; }"while" { return WHILESYM; }{letter}({letter}|{digit})* { yylval.id = strdup(yytext); return IDENT; }{digit}+ { yylval.num = atoi(yytext); return NUMBER; }[ \t\n\r] /* skip whitespace */. { printf("Unknown character [%c]\n",yytext[0]); return UNKNOWN; }%% int yywrap(void){return 1;}