📄 lexer_v3.c
字号:
/* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status;#define YY_BUFFER_NEW 0#define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */#define YY_BUFFER_EOF_PENDING 2 };#endif /* !YY_STRUCT_YY_BUFFER_STATE *//* %if-c-only Standard (non-C++) definition *//* %not-for-header *//* %if-not-reentrant *//* Stack of input buffers. */static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. *//* %endif *//* %ok-for-header *//* %endif *//* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL)/* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]/* %if-c-only Standard (non-C++) definition *//* %if-not-reentrant *//* %not-for-header *//* yy_hold_char holds the character lost when yytext is formed. */static char yy_hold_char;static int yy_n_chars; /* number of characters read into yy_ch_buf */int yyleng;/* Points to current character in buffer. */static char *yy_c_buf_p = (char *) 0;static int yy_init = 0; /* whether we need to initialize */static int yy_start = 0; /* start state number *//* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */static int yy_did_buffer_switch_on_eof;/* %ok-for-header *//* %endif */void yyrestart (FILE *input_file );void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );void yy_delete_buffer (YY_BUFFER_STATE b );void yy_flush_buffer (YY_BUFFER_STATE b );void yypush_buffer_state (YY_BUFFER_STATE new_buffer );void yypop_buffer_state (void );static void yyensure_buffer_stack (void );static void yy_load_buffer_state (void );static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );/* %endif */void *yyalloc (yy_size_t );void *yyrealloc (void *,yy_size_t );void yyfree (void * );#define yy_new_buffer yy_create_buffer#define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ }#define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ }#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here *//* Begin user sect3 */#define yywrap(n) 1#define YY_SKIP_YYWRAP#define FLEX_DEBUGtypedef unsigned char YY_CHAR;FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;typedef int yy_state_type;extern int yylineno;int yylineno = 1;extern char *yytext;#define yytext_ptr yytext/* %if-c-only Standard (non-C++) definition */static yy_state_type yy_get_previous_state (void );static yy_state_type yy_try_NUL_trans (yy_state_type current_state );static int yy_get_next_buffer (void );static void yy_fatal_error (yyconst char msg[] );/* %endif *//* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */#define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ yyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp;/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */#define YY_NUM_RULES 43#define YY_END_OF_BUFFER 44/* This struct is not used in this scanner, but its presence is necessary. */struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; };static yyconst flex_int32_t yy_accept[666] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 41, 41, 17, 41, 41, 41, 41, 41, 41, 37, 41, 37, 37, 37, 37, 41, 41, 37, 37, 37, 37, 37, 37, 37, 37, 42, 37, 41, 29, 37, 3, 41, 41, 32, 30, 31, 41, 41, 20, 21, 0, 15, 16, 40, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 37, 37, 37, 37, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 27, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 30, 0, 31, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 37, 37, 37, 37, 0, 0, 0, 0, 5, 37, 37, 37, 37, 0, 37, 37, 37, 37, 37, 37, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 40, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 37, 37, 37, 37, 0, 23, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 26, 0, 0, 0, 0, 0, 25, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 39, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 37, 0, 0, 0, 0, 37, 37, 37, 13, 0, 0, 0, 37, 7, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 37, 13, 0, 0, 0, 37, 7, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 0, 0, 0, 0, 0, 37, 37, 0, 0, 0, 0, 37, 37, 0, 0, 0, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 0, 4, 0, 0, 0, 0, 0, 0, 37, 0, 0, 37, 0, 37, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 37, 37, 0, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 37, 37, 0, 37, 36, 0, 0, 0, 0, 0, 12, 0, 0, 0, 37, 37, 0, 0, 37, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 11, 11, 12, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 11, 11, 0, 0, 0, 37, 37, 37, 37, 37, 9, 10, 37, 37, 0, 0, 0, 0, 0, 0, 18, 0, 11, 0, 0, 0, 37, 37, 37, 37, 9, 10, 37, 0, 0, 0, 0, 0, 11, 0, 0, 0, 37, 37, 6, 37, 37, 0, 0, 0, 11, 0, 0, 0, 37, 37, 6, 6, 37, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 37, 37, 0, 0, 0, 4, 1, 0, 0, 37, 37, 37, 1, 0, 0, 0, 0, 37, 0, 37, 0, 11, 0, 0, 37, 37, 8, 0, 0, 0, 37, 8, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 34, 0, 0, 37, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 22, 0, 19, 0 } ;static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 12, 12, 14, 15, 16, 17, 18, 19, 20, 20, 21, 22, 23, 23, 23, 24, 25, 26, 27, 28, 29, 30, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 32, 59, 60, 32, 33, 1, 34, 1, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 32, 59, 60, 32, 1, 1, 1, 36, 1, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -