⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexer.c

📁 这是一个非常有价值的参考代码
💻 C
📖 第 1 页 / 共 5 页
字号:
		/* Support of yytext. */		*yy_cp = yy_hold_char;		/* yy_bp points to the position in yy_ch_buf of the start of		 * the current run.		 */		yy_bp = yy_cp;		yy_current_state = yy_start;yy_match:		do			{			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];			if ( yy_accept[yy_current_state] )				{				yy_last_accepting_state = yy_current_state;				yy_last_accepting_cpos = yy_cp;				}			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )				{				yy_current_state = (int) yy_def[yy_current_state];				if ( yy_current_state >= 552 )					yy_c = yy_meta[(unsigned int) yy_c];				}			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];			++yy_cp;			}		while ( yy_base[yy_current_state] != 629 );yy_find_action:		yy_act = yy_accept[yy_current_state];		if ( yy_act == 0 )			{ /* have to back up */			yy_cp = yy_last_accepting_cpos;			yy_current_state = yy_last_accepting_state;			yy_act = yy_accept[yy_current_state];			}		YY_DO_BEFORE_ACTION;do_action:	/* This label is used only to access EOF actions. */		switch ( yy_act )	{ /* beginning of action switch */			case 0: /* must back up */			/* undo the effects of YY_DO_BEFORE_ACTION */			*yy_cp = yy_hold_char;			yy_cp = yy_last_accepting_cpos;			yy_current_state = yy_last_accepting_state;			goto yy_find_action;case 1:YY_RULE_SETUP#line 55 "../lexer.l"{ yylval = number(yytext); return TKN_NUMBER; }	YY_BREAKcase 2:YY_RULE_SETUP#line 56 "../lexer.l"{ yylval = number(yytext); return TKN_NUMBER; }	YY_BREAKcase 3:YY_RULE_SETUP#line 57 "../lexer.l"{ yylval = number(yytext); return TKN_NUMBER; }	YY_BREAKcase 4:YY_RULE_SETUP#line 59 "../lexer.l"{ string_buf_ptr = string_buf; BEGIN(str); }	YY_BREAKcase 5:YY_RULE_SETUP#line 61 "../lexer.l"{ yylval = hexnumber(yytext); return TKN_NUMBER; }	YY_BREAKcase 6:YY_RULE_SETUP#line 65 "../lexer.l"{ /* The following eats '#' style comments to end of line */       BEGIN(comment); }	YY_BREAKcase 7:YY_RULE_SETUP#line 67 "../lexer.l"/* eat comments */ 	YY_BREAKcase 8:YY_RULE_SETUP#line 68 "../lexer.l"{ lineno++; BEGIN(INITIAL); }	YY_BREAKcase 9:YY_RULE_SETUP#line 71 "../lexer.l"{  /* The following eats multiline C style comments */        int c;        int comment_start;                comment_start = lineno;        while (1) {          while (((c = input()) != '*') && (c != EOF)) {            /* eat up text of comment, but keep counting lines */            if (c == '\n')              lineno++;          }                    if (c == '*') {            while ((c = input()) == '*')              ;            if (c == '/')              break;    /* found the end */          }                    if (c == EOF) {            fprintf(stderr, "error at %s:%d: EOF in comment\n",                     infile, lineno);            fprintf(stderr, "    comment started on line %d\n",                     comment_start);            exit(1);            break;          }        }     }	YY_BREAKcase 10:YY_RULE_SETUP#line 103 "../lexer.l"{ *string_buf_ptr = 0; string_buf_ptr = string_buf;          yylval = string(string_buf_ptr); BEGIN(INITIAL); return TKN_STRING; }	YY_BREAKcase 11:YY_RULE_SETUP#line 105 "../lexer.l"*string_buf_ptr++ = '\n';	YY_BREAKcase 12:YY_RULE_SETUP#line 106 "../lexer.l"*string_buf_ptr++ = '\t';	YY_BREAKcase 13:YY_RULE_SETUP#line 107 "../lexer.l"*string_buf_ptr++ = '\r';	YY_BREAKcase 14:YY_RULE_SETUP#line 108 "../lexer.l"*string_buf_ptr++ = '\b';	YY_BREAKcase 15:YY_RULE_SETUP#line 109 "../lexer.l"*string_buf_ptr++ = '\f';	YY_BREAKcase 16:YY_RULE_SETUP#line 110 "../lexer.l"*(string_buf_ptr++) = yytext[1];	YY_BREAKcase 17:YY_RULE_SETUP#line 111 "../lexer.l"{ char *yptr = yytext; while (*yptr)                                          *(string_buf_ptr++) = *(yptr++); }	YY_BREAKcase 18:YY_RULE_SETUP#line 113 "../lexer.l"{ fprintf(stderr, "error at line %d: unterminated character constant\n",         lineno);          exit(1); }	YY_BREAKcase 19:YY_RULE_SETUP#line 118 "../lexer.l"{ yylval=NULL; return K_ALLOWFULLPAGEBITSTREAM; }	YY_BREAKcase 20:YY_RULE_SETUP#line 119 "../lexer.l"{ yylval=NULL; return K_AVR910; }	YY_BREAKcase 21:YY_RULE_SETUP#line 120 "../lexer.l"{ yylval=NULL; return K_AVR910_DEVCODE; }	YY_BREAKcase 22:YY_RULE_SETUP#line 121 "../lexer.l"{ yylval=NULL; return K_PAGE_SIZE; }	YY_BREAKcase 23:YY_RULE_SETUP#line 122 "../lexer.l"{ yylval=NULL; return K_PAGED; }	YY_BREAKcase 24:YY_RULE_SETUP#line 123 "../lexer.l"{ yylval=NULL; return K_BAUDRATE; }	YY_BREAKcase 25:YY_RULE_SETUP#line 124 "../lexer.l"{ yylval=NULL; return K_BS2; }	YY_BREAKcase 26:YY_RULE_SETUP#line 125 "../lexer.l"{ yylval=NULL; return K_BUFF; }	YY_BREAKcase 27:YY_RULE_SETUP#line 126 "../lexer.l"{ yylval=NULL; return K_BUTTERFLY; }	YY_BREAKcase 28:YY_RULE_SETUP#line 127 "../lexer.l"{ yylval=NULL; return K_CHIP_ERASE_DELAY; }	YY_BREAKcase 29:YY_RULE_SETUP#line 128 "../lexer.l"{ yylval=NULL; return K_DESC; }	YY_BREAKcase 30:YY_RULE_SETUP#line 129 "../lexer.l"{ yylval=NULL; return K_DEFAULT_PARALLEL; }	YY_BREAKcase 31:YY_RULE_SETUP#line 130 "../lexer.l"{ yylval=NULL; return K_DEFAULT_PROGRAMMER; }	YY_BREAKcase 32:YY_RULE_SETUP#line 131 "../lexer.l"{ yylval=NULL; return K_DEFAULT_SERIAL; }	YY_BREAKcase 33:YY_RULE_SETUP#line 132 "../lexer.l"{ yylval=NULL; return K_DEVICECODE; }	YY_BREAKcase 34:YY_RULE_SETUP#line 133 "../lexer.l"{ yylval=NULL; return K_EECR; }	YY_BREAKcase 35:YY_RULE_SETUP#line 134 "../lexer.l"{ yylval=NULL; return K_EEPROM; }	YY_BREAKcase 36:YY_RULE_SETUP#line 135 "../lexer.l"{ yylval=NULL; return K_ENABLEPAGEPROGRAMMING; }	YY_BREAKcase 37:YY_RULE_SETUP#line 136 "../lexer.l"{ yylval=NULL; return K_ERRLED; }	YY_BREAKcase 38:YY_RULE_SETUP#line 137 "../lexer.l"{ yylval=NULL; return K_FLASH; }	YY_BREAKcase 39:YY_RULE_SETUP#line 138 "../lexer.l"{ yylval=NULL; return K_HAS_JTAG; }	YY_BREAKcase 40:YY_RULE_SETUP#line 139 "../lexer.l"{ yylval=NULL; return K_ID; }	YY_BREAKcase 41:YY_RULE_SETUP#line 140 "../lexer.l"{ yylval=NULL; return K_IDR; }	YY_BREAKcase 42:YY_RULE_SETUP#line 141 "../lexer.l"{ yylval=NULL; return K_JTAG_MKII; }	YY_BREAKcase 43:YY_RULE_SETUP#line 142 "../lexer.l"{ yylval=NULL; return K_MAX_WRITE_DELAY; }	YY_BREAKcase 44:YY_RULE_SETUP#line 143 "../lexer.l"{ yylval=NULL; return K_MEMORY; }	YY_BREAKcase 45:YY_RULE_SETUP#line 144 "../lexer.l"{ yylval=NULL; return K_MIN_WRITE_DELAY; }	YY_BREAKcase 46:YY_RULE_SETUP#line 145 "../lexer.l"{ yylval=NULL; return K_MISO; }	YY_BREAKcase 47:YY_RULE_SETUP#line 146 "../lexer.l"{ yylval=NULL; return K_MOSI; }	YY_BREAKcase 48:YY_RULE_SETUP#line 147 "../lexer.l"{ yylval=NULL; return K_NUM_PAGES; }	YY_BREAKcase 49:YY_RULE_SETUP#line 148 "../lexer.l"{ yylval=NULL; return K_NUM_PAGES; }	YY_BREAKcase 50:YY_RULE_SETUP#line 149 "../lexer.l"{ yylval=NULL; return K_PAGE_SIZE; }	YY_BREAKcase 51:YY_RULE_SETUP#line 150 "../lexer.l"{ yylval=NULL; return K_PAGED; }	YY_BREAKcase 52:YY_RULE_SETUP#line 151 "../lexer.l"{ yylval=NULL; return K_PAGEL; }	YY_BREAKcase 53:YY_RULE_SETUP#line 152 "../lexer.l"{ yylval=NULL; return K_PAR; }	YY_BREAKcase 54:YY_RULE_SETUP#line 153 "../lexer.l"{ yylval=NULL; return K_PARALLEL; }	YY_BREAKcase 55:YY_RULE_SETUP#line 154 "../lexer.l"{ yylval=NULL; return K_PART; }	YY_BREAKcase 56:YY_RULE_SETUP#line 155 "../lexer.l"{ yylval=NULL; return K_PGMLED; }	YY_BREAKcase 57:YY_RULE_SETUP#line 156 "../lexer.l"{ yylval=NULL; return K_PROGRAMMER; }	YY_BREAKcase 58:YY_RULE_SETUP#line 157 "../lexer.l"{ yylval=NULL; return K_PWROFF_AFTER_WRITE; }	YY_BREAKcase 59:YY_RULE_SETUP#line 158 "../lexer.l"{ yylval=NULL; return K_RAMPZ; }	YY_BREAKcase 60:YY_RULE_SETUP#line 159 "../lexer.l"{ yylval=NULL; return K_RDYLED; }	YY_BREAKcase 61:YY_RULE_SETUP#line 160 "../lexer.l"{ yylval=NULL; return K_READBACK_P1; }	YY_BREAKcase 62:YY_RULE_SETUP#line 161 "../lexer.l"{ yylval=NULL; return K_READBACK_P2; }	YY_BREAKcase 63:YY_RULE_SETUP#line 162 "../lexer.l"{ yylval=NULL; return K_RETRY_PULSE; }	YY_BREAKcase 64:YY_RULE_SETUP#line 163 "../lexer.l"{ yylval=NULL; return K_SERBB; }	YY_BREAKcase 65:YY_RULE_SETUP#line 164 "../lexer.l"{ yylval=NULL; return K_SERIAL; }	YY_BREAKcase 66:YY_RULE_SETUP#line 165 "../lexer.l"{ yylval=NULL; return K_SIZE; }	YY_BREAKcase 67:YY_RULE_SETUP#line 166 "../lexer.l"{ yylval=NULL; return K_SPMCR; }	YY_BREAKcase 68:YY_RULE_SETUP#line 167 "../lexer.l"{ yylval=NULL; return K_STK500; }	YY_BREAKcase 69:YY_RULE_SETUP#line 168 "../lexer.l"{ yylval=NULL; return K_STK500V2; }	YY_BREAKcase 70:YY_RULE_SETUP#line 169 "../lexer.l"{ yylval=NULL; return K_STK500_DEVCODE; }	YY_BREAKcase 71:YY_RULE_SETUP#line 170 "../lexer.l"{ yylval=NULL; return K_TYPE; }	YY_BREAKcase 72:YY_RULE_SETUP#line 171 "../lexer.l"{ yylval=NULL; return K_VCC; }	YY_BREAKcase 73:YY_RULE_SETUP#line 172 "../lexer.l"{ yylval=NULL; return K_VFYLED; }	YY_BREAKcase 74:YY_RULE_SETUP#line 174 "../lexer.l"{ yylval=NULL; return K_TIMEOUT; }	YY_BREAKcase 75:YY_RULE_SETUP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -