参考Reading new line giving syntax error in LEX YACC 我们正在使用的lex文件
%{
/*
parser for ssa;
*/
#include<stdio.h>
#include<stdlib.h>
#include"y.tab.h"
%}
%%
[\t]+ ;
\n ;
[if]+ printf("first input\n");
[else]+ return(op);
[=]+ return(equal);
[+]+ return(op);
[*]+ return(op);
[-]+ return(op);
[\<][b][b][ ]+[1-9][\>] {return(bblock);}
([[_][a-z]])|([a-z][_][0-9]+)|([0-9]+) {return(var);}
. ;
%%
如果我想将令牌作为字符串,即a_2,我该怎么办? 怎么做????
输入文件是
a_2 = _6 + b_3;
a_8 = b_7 - c_5;
答案 0 :(得分:1)
您可以在野牛文件中定义令牌类型:
%union{
char *string;
}
%token <string> var
然后替换
return(var);
与
yylval.string=malloc(yyleng); sprintf(yylval.string,"%s",yytext);return var;