📄 lexer.c
字号:
YY_BREAKcase 84:YY_RULE_SETUP#line 300 "lexer.l"{ SETPOS_NDE(MINUS_EQ); return(ASSIGN); } YY_BREAKcase 85:YY_RULE_SETUP#line 301 "lexer.l"{ SETPOS_NDE(STAR_EQ); return(ASSIGN); } YY_BREAKcase 86:YY_RULE_SETUP#line 302 "lexer.l"{ SETPOS_NDE(DIV_EQ); return(ASSIGN); } YY_BREAKcase 87:YY_RULE_SETUP#line 303 "lexer.l"{ SETPOS_NDE(MOD_EQ); return(ASSIGN); } YY_BREAKcase 88:YY_RULE_SETUP#line 305 "lexer.l"{ SETPOS_NDE(NOT); return(NOT); } YY_BREAKcase 89:YY_RULE_SETUP#line 306 "lexer.l"{ SETPOS_NDE(AND); return(AND); } YY_BREAKcase 90:YY_RULE_SETUP#line 307 "lexer.l"{ SETPOS_NDE(OR); return(OR); } YY_BREAKcase 91:YY_RULE_SETUP#line 309 "lexer.l"{ SETPOS_NDE(B_NOT); return(B_NOT); } YY_BREAKcase 92:YY_RULE_SETUP#line 310 "lexer.l"{ SETPOS_NDE(B_AND); return(B_AND); } YY_BREAKcase 93:YY_RULE_SETUP#line 311 "lexer.l"{ SETPOS_NDE(B_OR); return(B_OR); } YY_BREAKcase 94:YY_RULE_SETUP#line 312 "lexer.l"{ SETPOS_NDE(B_XOR); return(B_XOR); } YY_BREAKcase 95:YY_RULE_SETUP#line 314 "lexer.l"{ SETPOS_NDE(B_NOT_EQ); return(ASSIGN); } YY_BREAKcase 96:YY_RULE_SETUP#line 315 "lexer.l"{ SETPOS_NDE(B_AND_EQ); return(ASSIGN); } YY_BREAKcase 97:YY_RULE_SETUP#line 316 "lexer.l"{ SETPOS_NDE(B_OR_EQ); return(ASSIGN); } YY_BREAKcase 98:YY_RULE_SETUP#line 317 "lexer.l"{ SETPOS_NDE(B_XOR_EQ); return(ASSIGN); } YY_BREAKcase 99:YY_RULE_SETUP#line 319 "lexer.l"{ SETPOS_NDE(L_SHIFT); return(L_SHIFT); } YY_BREAKcase 100:YY_RULE_SETUP#line 320 "lexer.l"{ SETPOS_NDE(R_SHIFT); return(R_SHIFT); } YY_BREAKcase 101:YY_RULE_SETUP#line 321 "lexer.l"{ SETPOS_NDE(L_SHIFT_EQ); return(ASSIGN); } YY_BREAKcase 102:YY_RULE_SETUP#line 322 "lexer.l"{ SETPOS_NDE(R_SHIFT_EQ); return(ASSIGN); } YY_BREAKcase 103:YY_RULE_SETUP#line 324 "lexer.l"{ SETPOS_NDE(EQUAL); return(COMP_EQ); } YY_BREAKcase 104:YY_RULE_SETUP#line 325 "lexer.l"{ SETPOS_NDE(LESS); return(COMP_ARITH); } YY_BREAKcase 105:YY_RULE_SETUP#line 326 "lexer.l"{ SETPOS_NDE(LESS); return(LESS); } YY_BREAKcase 106:YY_RULE_SETUP#line 327 "lexer.l"{ SETPOS_NDE(LESS_EQ); return(COMP_ARITH); } YY_BREAKcase 107:YY_RULE_SETUP#line 328 "lexer.l"{ SETPOS_NDE(GRTR); return(COMP_ARITH); } YY_BREAKcase 108:YY_RULE_SETUP#line 329 "lexer.l"{ SETPOS_NDE(GRTR); return(GRTR); } YY_BREAKcase 109:YY_RULE_SETUP#line 330 "lexer.l"{ SETPOS_NDE(GRTR_EQ); return(COMP_ARITH); } YY_BREAKcase 110:YY_RULE_SETUP#line 331 "lexer.l"{ SETPOS_NDE(NOT_EQ); return(COMP_EQ); } YY_BREAKcase 111:YY_RULE_SETUP#line 333 "lexer.l"{ SETPOS_NDE(EQ); return(EQ); } YY_BREAKcase 112:YY_RULE_SETUP#line 334 "lexer.l"{ SETPOS_NDE(INCR); return(INCR); } YY_BREAKcase 113:YY_RULE_SETUP#line 335 "lexer.l"{ SETPOS_NDE(DECR); return(DECR); } YY_BREAKcase 114:YY_RULE_SETUP#line 337 "lexer.l"{ SETPOS_NDE(LPAREN); return(LPAREN); } YY_BREAKcase 115:YY_RULE_SETUP#line 338 "lexer.l"{ SETPOS_NDE(RPAREN); return(RPAREN); } YY_BREAKcase 116:YY_RULE_SETUP#line 339 "lexer.l"{ SETPOS_NDE(LBRCKT); return(LBRCKT); } YY_BREAKcase 117:YY_RULE_SETUP#line 340 "lexer.l"{ SETPOS_NDE(RBRCKT); return(RBRCKT); } YY_BREAKcase 118:YY_RULE_SETUP#line 341 "lexer.l"{ SETPOS_NDE(LBRACE); return(LBRACE); } YY_BREAKcase 119:YY_RULE_SETUP#line 342 "lexer.l"{ SETPOS_NDE(RBRACE); return(RBRACE); } YY_BREAKcase 120:YY_RULE_SETUP#line 344 "lexer.l"{ SETPOS_NDE(DOT); return(DOT); } YY_BREAKcase 121:YY_RULE_SETUP#line 345 "lexer.l"{ SETPOS_NDE(ARROW); return(ARROW); } YY_BREAKcase 122:YY_RULE_SETUP#line 347 "lexer.l"{ SETPOS_NDE(QUESTMARK); return(QUESTMARK); } YY_BREAKcase 123:YY_RULE_SETUP#line 348 "lexer.l"{ SETPOS_NDE(COLON); return(COLON); } YY_BREAKcase 124:YY_RULE_SETUP#line 349 "lexer.l"{ SETPOS_NDE(SEMICOLON); return(SEMICOLON); } YY_BREAKcase 125:YY_RULE_SETUP#line 350 "lexer.l"{ SETPOS_NDE(COMMA); return(COMMA); } YY_BREAKcase 126:YY_RULE_SETUP#line 351 "lexer.l"{ SETPOS_LEAF(ELLIPSIS,TN_ELLIPSIS); return(ELLIPSIS); } YY_BREAK/* Unused (invalid) characters */case 127:YY_RULE_SETUP#line 354 "lexer.l"{ SETPOS_NDE(BACKQUOTE); return(BACKQUOTE); } YY_BREAKcase 128:YY_RULE_SETUP#line 355 "lexer.l"{ SETPOS_NDE(AT); return(AT); } YY_BREAKcase 129:YY_RULE_SETUP#line 356 "lexer.l"{ SETPOS_NDE(DOLLAR); return(DOLLAR); } YY_BREAK/* Preprocessor Stuff */case 130:YY_RULE_SETUP#line 359 "lexer.l"{ Parse_TOS->yylineno++; Parse_TOS->yynxtcol = 0; } YY_BREAKcase 131:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp -= 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_RULE_SETUP#line 360 "lexer.l"{ BEGIN_PP(); get_lineno(); } YY_BREAKcase 132:YY_RULE_SETUP#line 361 "lexer.l"{ int n = yyleng; BEGIN_PP(); tokn_ptr = tokn_buff; if (tokn_ptr + n < tokn_end) { memcpy(tokn_ptr,yytext,n); tokn_ptr += n; } else yywarn("Preprocessor line too long"); SETPOS_LEAF(PP_DEFINE,TN_CPP); } YY_BREAKcase 133:YY_RULE_SETUP#line 372 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 134:YY_RULE_SETUP#line 373 "lexer.l"{ BEGIN_PP(); get_lineno(); } YY_BREAKcase 135:YY_RULE_SETUP#line 374 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 136:YY_RULE_SETUP#line 375 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 137:YY_RULE_SETUP#line 376 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 138:YY_RULE_SETUP#line 377 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 139:YY_RULE_SETUP#line 378 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 140:YY_RULE_SETUP#line 379 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 141:YY_RULE_SETUP#line 380 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 142:YY_RULE_SETUP#line 381 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 143:YY_RULE_SETUP#line 382 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 144:YY_RULE_SETUP#line 383 "lexer.l"{ BEGIN_PP(); } YY_BREAKcase 145:YY_RULE_SETUP#line 385 "lexer.l"{ SETPOS_NDE(LB_SIGN); return(LB_SIGN); } YY_BREAKcase 146:YY_RULE_SETUP#line 386 "lexer.l"{ SETPOS_NDE(DOUB_LB_SIGN); return(DOUB_LB_SIGN); } YY_BREAKcase 147:YY_RULE_SETUP#line 388 "lexer.l"{ /* Preprocessor continuation line */ Parse_TOS->yylineno++; Parse_TOS->yynxtcol = 0; } YY_BREAKcase 148:YY_RULE_SETUP#line 393 "lexer.l"{ /* End of this preprocessor logical line */ lvalp->node = (treenode *) NULL; in_preprocess = 0; yyless(0); /* Hack! */ BEGIN(INITIAL); } YY_BREAKcase 149:YY_RULE_SETUP#line 400 "lexer.l"{ /* Swallow cpp junk to prevent it being echo'd */ } YY_BREAKcase 150:YY_RULE_SETUP#line 403 "lexer.l"{ /* Identifier */ int last_was_type = (err_type == TN_TYPE) && (err_tok != TYPEDEF) && (err_tok != AUTO) && (err_tok != EXTRN) && (err_tok != STATIC) && (err_tok != VOLATILE) && (err_tok != CONST) && (err_tok != REGISTR); SETPOS_LEAF(IDENT,TN_IDENT); lvalp->leaf->data.sval = nmelook(yytext,yyleng+1); /* Check symbol table and insert */ /* ptr back to definition. */ { symentry_t *se; if (DBG) printf("%s:%d lookup %s <%s>\n", lvalp->leaf->hdr.fnm, lvalp->leaf->hdr.line, yytext, lvalp->leaf->data.sval->str); se = symtab_lookup(ParseStack->contxt->syms, lvalp->leaf->data.sval); if (DBG) { if (!se) printf(" new\n"); else { extern void show_hashtab(hashtab_t *that, int, FILE *fp); printf(" old (%u) -- owner %s %u\n", se, se->nes && se->nes->owner ? se->nes->owner : "no owner", se && se->nes? se->nes : 0); if (se && se->nes && se->nes->htab) show_hashtab(se->nes->htab, 1, stdout); } } lvalp->leaf->syment = se; if (! last_was_type) { if (se && is_typedef(se)) { err_type = lvalp->leaf->hdr.type = TN_TYPE; err_tok = lvalp->leaf->hdr.tok = TYPEDEF_NAME; return(TYPEDEF_NAME); } } } return(IDENT); } YY_BREAKcase 151:#line 454 "lexer.l"case 152:#line 455 "lexer.l"case 153:YY_RULE_SETUP#line 455 "lexer.l"{ /* An integer */ SETPOS_LEAF(INUM,TN_INT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -