1. Lex输入输出变量yyin, yyout
yyin, yyout是lex的默认输入输出指针, 为FILE*类变量, 若不初始化即默认控制台输入输出.
为使编译器使用文件输入输出, 将yyin, yyout赋值为读写文件的文件指针即可.
2. 在yacc中初始化yyin, yyout
由于yyin, yyout为lex中的变量, 因此在初始化之前要声明这两个变量.
externFILE * yyin;
externFILE * yyout;
3. 示例
编译环境:Parser Generater, Visual Studio 2013
Lex源码:
%{
#include<stdio.h>
#include<string.h>
#include"myparser.h" //注意,这里的头文件要和Parser Generator生成的头文件名一样。
externchar *yytext;
%}
%%
[1-9][0-9]* {yylval.number=atoi(yytext);return NUMBER;}
\n returnENDLINE;
[ \t]+ ;
"+" returnPLUS;
"-" return