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 + -
显示快捷键?