flexend.txt

来自「一个flex和bison用法入门的很好的例子。 按照词法分析,语法分析,语义分析」· 文本 代码 · 共 48 行

TXT
48
字号
%{
#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 + =
减小字号Ctrl + -
显示快捷键?