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




