数控车床 >> 行业动态 >> 如何让yylex后的代码运行
如何让yylex后的代码运行
下面是利用lex写的一段代码, %% .* printf(“hello\n”); quit exit(0); %% main() { yylex(); printf(“bye\n”); } 在没有彻底明白lex编译以后的文件流程的情况下,如何在程序结束时让yylex()后的printf()打印出结果呢?我们执行编译成的可执行文件会发现倘若我们只是用ctrl+c或quit退出程序是直接在当前位置退出程序,后面的printf根本不会执行。解决这个小问题,下面我用一种间接的方法实现了它: %{ #include< etjmp.h> #include< ignal.h> jmp_buf positio %} %% quit longjmp(position,1); .* printf(“hello\n”); %% main() { extern int function(); if(setjmp(position)==1) goto quit; signal(SIGINT, function); yylex(); quit: printf(“bye\n”); exit(0); } function() { longjmp(position,1); } 以上代码在AIX下调试通过
