📄 lexer.c
字号:
/* 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 + -