main_part5
来自「学习lemon语法分析的windows程序」· 代码 · 共 63 行
TXT
63 行
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#define BUFS 1024/** * We have to declare these here - they're not in any header files * we can inclde. yyparse() is declared with an empty argument list * so that it is compatible with the generated C code from bison. * */extern FILE *yyin;typedef struct yy_buffer_state *YY_BUFFER_STATE;extern "C" { int yylex( void ); YY_BUFFER_STATE yy_scan_string( const char * ); void yy_delete_buffer( YY_BUFFER_STATE );}int main(int argc,char** argv){ int n; int yv; char buf[BUFS+1]; void* pParser = ParseAlloc (malloc); struct Token t0,t1; struct Token mToken; t0.n=0; t0.value=0; std::cout << "Enter an expression like 3+5 <return>" << std::endl; std::cout << " Terminate with ^D" << std::endl; while ( ( n=read(fileno(stdin), buf, BUFS )) > 0) { buf[n]='\0'; yy_scan_string(buf); // on EOF yylex will return 0 while( (yv=yylex()) != 0) { std::cout << " yylex() " << yv << " yylval.dval " << yylval.dval << std::endl; t0.value=yylval.dval; Parse (pParser, yv, t0); } } Parse (pParser, 0, t0); ParseFree(pParser, free );}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?