引用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);}
. ;
%%
如果我想获取字符串形式的 token ,即 a_2,我该怎么办 怎么办呢???
输入文件是
a_2 = _6 + b_3;
a_8 = b_7 - c_5;
<小时/>
最佳答案
您可以在 bison 文件中定义 token 类型:
%union{
char *string;
}
%token <string> var
然后替换
return(var);
与
yylval.string=malloc(yyleng); sprintf(yylval.string,"%s",yytext);return var;
关于c - 如何在 Lex 和 Yacc 中标记字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22576587/