📄 eof_rules.lex
字号:
/* * eof_rules.lex : An example of using multiple buffers * EOF rules, and start states */%{ #define MAX_NEST 10 YY_BUFFER_STATE include_stack[MAX_NEST];int include_count = -1;%}%x INCLUDE%%^"#include"[ \t]*\" BEGIN(INCLUDE);<INCLUDE>\" BEGIN(INITIAL); <INCLUDE>[^\"]+ { /* get the include file name */ if ( include_count >= MAX_NEST){ fprintf( stderr, "Too many include files" ); exit( 1 ); } include_stack[++include_count] = YY_CURRENT_BUFFER; yyin = fopen( yytext, "r" ); if ( ! yyin ){ fprintf( stderr, "Unable to open \"%s\"\n",yytext); exit( 1 ); } yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); BEGIN(INITIAL); }<INCLUDE><<EOF>> { fprintf( stderr, "EOF in include" ); yyterminate(); }<<EOF>> { if ( include_count <= 0 ){ yyterminate(); } else { yy_delete_buffer(include_stack[include_count--] ); yy_switch_to_buffer(include_stack[include_count] ); BEGIN(INCLUDE); } }[a-z]+ ECHO;.|\n ECHO;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -