⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flexend.txt

📁 一个flex和bison用法入门的很好的例子。 按照词法分析,语法分析,语义分析的顺序来熟悉flex和bison这两个有力的工具。最后给出了一个用flex做词法分析用bison做语法分析设计的科学计算
💻 TXT
字号:
%{
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
extern YYSTYPE yylval;
%}
DIGIT [0-9]
ID    [a-zA-Z][a-zA-Z0-9]*
SPACE " "
%%

{DIGIT}+ {  yylval.val= atof(yytext);return NUM; }

{DIGIT}+"."{DIGIT}* {yylval.val= atof(yytext);return NUM;}

if|then|begin|end|procedure|function {printf("A keyword:%s\n",yytext); return 3;}

{ID} {
     symrec *s;
     s = getsym (yytext);
      if (s == 0)
        s = putsym (yytext, VAR);
      yylval.tptr = s;
      return s->type;
}
"+" {return ADD;}
"-" {return SUB;}
"*" {return MUL;}
"/" {return DIV;}
"^" {return POW;}
"(" {return LBRO;}
")" {return RBRO;}
"=" {return EQ;}
[\t]+
"\n" {return ENDLINE;} 



{SPACE}+ /* do nothing with space*/


.   {yylval.tptr = strdup(yytext);return 0;}
%%
int yywrap(){return 1;}

extern symrec *putsym (char *sym_name,intsym_type);
extern symrec *getsym (char *sym_name);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -