📄 lexer.c
字号:
#define YY_INPUT(buf,result,max_size) \ if ( __IDL__current_buffer->__IDL__is_interactive ) \ { \ int c = '*', n; \ for ( n = 0; n < max_size && \ (c = getc( __IDL_in )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( __IDL_in ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else if ( ((result = fread( buf, 1, max_size, __IDL_in )) == 0) \ && ferror( __IDL_in ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" );#endif/* No semi-colon after return; correct usage is to write "__IDL_terminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */#ifndef __IDL_terminate#define __IDL_terminate() return YY_NULL#endif/* Number of entries by which start-condition stack grows. */#ifndef YY_START_STACK_INCR#define YY_START_STACK_INCR 25#endif/* Report a fatal error. */#ifndef YY_FATAL_ERROR#define YY_FATAL_ERROR(msg) __IDL__fatal_error( msg )#endif/* Default declaration of generated scanner - a define so the user can * easily add parameters. */#ifndef YY_DECL#define YY_DECL int __IDL_lex YY_PROTO(( void ))#endif/* Code executed at the beginning of each rule, after __IDL_text and __IDL_leng * have been set up. */#ifndef YY_USER_ACTION#define YY_USER_ACTION#endif/* Code executed at the end of each rule. */#ifndef YY_BREAK#define YY_BREAK break;#endif#define YY_RULE_SETUP \ if ( __IDL_leng > 0 ) \ __IDL__current_buffer->__IDL__at_bol = \ (__IDL_text[__IDL_leng - 1] == '\n'); \ YY_USER_ACTIONYY_DECL { register __IDL__state_type __IDL__current_state; register char *__IDL__cp, *__IDL__bp; register int __IDL__act;#line 127 "./lexer.l" SELECT_START; if ( __IDL__init ) { __IDL__init = 0;#ifdef YY_USER_INIT YY_USER_INIT;#endif if ( ! __IDL__start ) __IDL__start = 1; /* first start state */ if ( ! __IDL_in ) __IDL_in = stdin; if ( ! __IDL_out ) __IDL_out = stdout; if ( ! __IDL__current_buffer ) __IDL__current_buffer = __IDL__create_buffer( __IDL_in, YY_BUF_SIZE ); __IDL__load_buffer_state(); } while ( 1 ) /* loops until end-of-file is reached */ { __IDL__cp = __IDL__c_buf_p; /* Support of __IDL_text. */ *__IDL__cp = __IDL__hold_char; /* __IDL__bp points to the position in __IDL__ch_buf of the start of * the current run. */ __IDL__bp = __IDL__cp; __IDL__current_state = __IDL__start; __IDL__current_state += YY_AT_BOL();__IDL__match: do { register YY_CHAR __IDL__c = __IDL__ec[YY_SC_TO_UI(*__IDL__cp)]; if ( __IDL__accept[__IDL__current_state] ) { __IDL__last_accepting_state = __IDL__current_state; __IDL__last_accepting_cpos = __IDL__cp; } while ( __IDL__chk[__IDL__base[__IDL__current_state] + __IDL__c] != __IDL__current_state ) { __IDL__current_state = (int) __IDL__def[__IDL__current_state]; if ( __IDL__current_state >= 348 ) __IDL__c = __IDL__meta[(unsigned int) __IDL__c]; } __IDL__current_state = __IDL__nxt[__IDL__base[__IDL__current_state] + (unsigned int) __IDL__c]; ++__IDL__cp; } while ( __IDL__base[__IDL__current_state] != 906 );__IDL__find_action: __IDL__act = __IDL__accept[__IDL__current_state]; if ( __IDL__act == 0 ) { /* have to back up */ __IDL__cp = __IDL__last_accepting_cpos; __IDL__current_state = __IDL__last_accepting_state; __IDL__act = __IDL__accept[__IDL__current_state]; } YY_DO_BEFORE_ACTION;do_action: /* This label is used only to access EOF actions. */ switch ( __IDL__act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *__IDL__cp = __IDL__hold_char; __IDL__cp = __IDL__last_accepting_cpos; __IDL__current_state = __IDL__last_accepting_state; goto __IDL__find_action;case 1:YY_RULE_SETUP#line 131 "./lexer.l"{ char *s = __IDL_text + 2; while (isspace (*s)) ++s; codefrag_desc = g_strdup (s); codefrag_list = codefrag_list_tail = NULL; if (!(__IDL_flags & IDLF_XPIDL || __IDL_flags & IDLF_CODEFRAGS)) __IDL_error ("Code fragment syntax not enabled"); else BEGIN (CFRGX);} YY_BREAKcase 2:YY_RULE_SETUP#line 143 "./lexer.l"{ __IDL_lval.tree = IDL_codefrag_new (codefrag_desc, codefrag_list); tokreturn (TOK_CODEFRAG);} YY_BREAKcase 3:YY_RULE_SETUP#line 147 "./lexer.l"{ char *s; GSList *slist; s = g_strdup (__IDL_text); slist = g_slist_alloc (); slist->data = s; if (codefrag_list == NULL) { codefrag_list = slist; codefrag_list_tail = slist; } else { codefrag_list_tail->next = slist; codefrag_list_tail = slist; }} YY_BREAKcase 4:YY_RULE_SETUP#line 163 "./lexer.l"{ int n; char *p = __IDL_text; char *s; while (isspace (*p) || *p == '#') ++p; s = p; sscanf (p, "%*6s%n", &n); s += n; while (isspace (*s)) ++s; __IDL_do_pragma (s);} YY_BREAKcase 5:YY_RULE_SETUP#line 175 "./lexer.l"{ char *starttext; char *filename; char *filename2; int line; starttext = __IDL_text; while (isspace (*starttext)) ++starttext; filename = g_malloc (strlen (starttext) + 1); sscanf (starttext, "# %d %s", &line, filename); if (*filename == '"') { filename2 = g_strdup (filename + 1); filename2[strlen (filename) - 2] = 0; g_free (filename); } else filename2 = filename; IDL_file_set (filename2, line); g_free (filename2);} YY_BREAKcase 6:YY_RULE_SETUP#line 198 "./lexer.l"; YY_BREAKcase 7:YY_RULE_SETUP#line 199 "./lexer.l"{ sscanf (__IDL_text, "%" IDL_LL "o", &__IDL_lval.integer); tokreturn (TOK_INTEGER);} YY_BREAKcase 8:YY_RULE_SETUP#line 203 "./lexer.l"{ sscanf (__IDL_text, "%" IDL_LL "d", &__IDL_lval.integer); tokreturn (TOK_INTEGER);} YY_BREAKcase 9:YY_RULE_SETUP#line 207 "./lexer.l"{ sscanf (__IDL_text, "%" IDL_LL "u", &__IDL_lval.integer); tokreturn (TOK_INTEGER);} YY_BREAKcase 10:YY_RULE_SETUP#line 211 "./lexer.l"{ sscanf (__IDL_text + 2, "%" IDL_LL "x", &__IDL_lval.integer); tokreturn (TOK_INTEGER);} YY_BREAKcase 11:YY_RULE_SETUP#line 215 "./lexer.l"{ __IDL_lval.str = g_strdup (__IDL_text); tokreturn (TOK_FIXEDP);} YY_BREAKcase 12:YY_RULE_SETUP#line 219 "./lexer.l"{ __IDL_lval.floatp = atof (__IDL_text); tokreturn (TOK_FLOATP);} YY_BREAKcase 13:YY_RULE_SETUP#line 223 "./lexer.l"tokreturn (TOK_FALSE); YY_BREAKcase 14:YY_RULE_SETUP#line 224 "./lexer.l"tokreturn (TOK_OBJECT); YY_BREAKcase 15:YY_RULE_SETUP#line 225 "./lexer.l"tokreturn (TOK_TRUE); YY_BREAKcase 16:YY_RULE_SETUP#line 226 "./lexer.l"tokreturn (TOK_ANY); YY_BREAKcase 17:YY_RULE_SETUP#line 227 "./lexer.l"tokreturn (TOK_ATTRIBUTE); YY_BREAKcase 18:YY_RULE_SETUP#line 228 "./lexer.l"tokreturn (TOK_BOOLEAN); YY_BREAKcase 19:YY_RULE_SETUP#line 229 "./lexer.l"tokreturn (TOK_CASE); YY_BREAKcase 20:YY_RULE_SETUP#line 230 "./lexer.l"tokreturn (TOK_CHAR); YY_BREAKcase 21:YY_RULE_SETUP#line 231 "./lexer.l"tokreturn (TOK_CONST); YY_BREAKcase 22:YY_RULE_SETUP#line 232 "./lexer.l"tokreturn (TOK_CONTEXT); YY_BREAKcase 23:YY_RULE_SETUP#line 233 "./lexer.l"tokreturn (TOK_DEFAULT); YY_BREAKcase 24:YY_RULE_SETUP#line 234 "./lexer.l"tokreturn (TOK_DOUBLE); YY_BREAKcase 25:YY_RULE_SETUP#line 235 "./lexer.l"tokreturn (TOK_ENUM); YY_BREAKcase 26:YY_RULE_SETUP#line 236 "./lexer.l"tokreturn (TOK_EXCEPTION); YY_BREAKcase 27:YY_RULE_SETUP#line 237 "./lexer.l"tokreturn (TOK_FIXED); YY_BREAKcase 28:YY_RULE_SETUP#line 238 "./lexer.l"tokreturn (TOK_FLOAT); YY_BREAKcase 29:YY_RULE_SETUP#line 239 "./lexer.l"tokreturn (TOK_IN); YY_BREAKcase 30:YY_RULE_SETUP#line 240 "./lexer.l"tokreturn (TOK_INOUT); YY_BREAKcase 31:YY_RULE_SETUP#line 241 "./lexer.l"tokreturn (TOK_INTERFACE); YY_BREAKcase 32:YY_RULE_SETUP#line 242 "./lexer.l"tokreturn (TOK_LONG); YY_BREAKcase 33:YY_RULE_SETUP#line 243 "./lexer.l"tokreturn (TOK_MODULE); YY_BREAKcase 34:YY_RULE_SETUP#line 244 "./lexer.l"tokreturn (TOK_NATIVE); YY_BREAKcase 35:YY_RULE_SETUP#line 245 "./lexer.l"tokreturn (TOK_OCTET); YY_BREAKcase 36:YY_RULE_SETUP#line 246 "./lexer.l"tokreturn (TOK_ONEWAY); YY_BREAKcase 37:YY_RULE_SETUP#line 247 "./lexer.l"tokreturn (TOK_OUT); YY_BREAKcase 38:YY_RULE_SETUP#line 248 "./lexer.l"tokreturn (TOK_RAISES); YY_BREAKcase 39:YY_RULE_SETUP#line 249 "./lexer.l"tokreturn (TOK_READONLY); YY_BREAKcase 40:YY_RULE_SETUP#line 250 "./lexer.l"tokreturn (TOK_SEQUENCE); YY_BREAKcase 41:YY_RULE_SETUP#line 251 "./lexer.l"tokreturn (TOK_SHORT); YY_BREAKcase 42:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -