diff --git a/src/config.c b/src/config.c index 9f5d9122..7e68090a 100644 --- a/src/config.c +++ b/src/config.c @@ -64,6 +64,7 @@ extern char * yytext; Component_t avr_comp[] = { // PROGRAMMER pgm_comp_desc(prog_modes, COMP_INT), + pgm_comp_desc(extra_features, COMP_INT), // AVRPART part_comp_desc(prog_modes, COMP_INT), @@ -282,6 +283,9 @@ TOKEN *new_constant(const char *con) { !strcmp("PM_XMEGAJTAG", con)? PM_XMEGAJTAG: !strcmp("PM_AVR32JTAG", con)? PM_AVR32JTAG: !strcmp("PM_aWire", con)? PM_aWire: + !strcmp("HAS_SUFFER", con)? HAS_SUFFER: + !strcmp("HAS_VTARG_SWITCH", con)? HAS_VTARG_SWITCH: + !strcmp("HAS_VTARG_ADJ", con)? HAS_VTARG_ADJ: (assigned = 0); if(!assigned) { diff --git a/src/config_gram.y b/src/config_gram.y index 9c6a94f7..9df42478 100644 --- a/src/config_gram.y +++ b/src/config_gram.y @@ -94,7 +94,6 @@ static int pin_name; %token K_AVR910_DEVCODE %token K_EEPROM %token K_ERRLED -%token K_EXTRA_FEATURES %token K_FLASH %token K_ID %token K_IO @@ -355,11 +354,6 @@ prog_decl : current_prog->lineno = cfg_lineno; free_token($3); } - K_EXTRA_FEATURES TKN_EQUAL numexpr - { - current_prog->extra_features = $3->value.number; - free_token($3); - } | ; diff --git a/src/lexer.l b/src/lexer.l index cba56a22..b7f4e0b0 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -135,12 +135,9 @@ SIGN [+-] return TKN_COMPONENT; } -PM_(SPM|TPI|ISP|PDI|UPDI|HVSP|HVPP|debugWIRE|JTAG|JTAGmkI|XMEGAJTAG|AVR32JTAG|aWire) { /* Constants */ - yylval = new_constant(yytext); - return TKN_NUMBER; -} - -HAS_(SUFFER|VTARG_SWITCH|VTARG_ADJ) { /* Constants */ +(?x: PM_(SPM|TPI|ISP|PDI|UPDI|HVSP|HVPP|debugWIRE|JTAG|JTAGmkI|XMEGAJTAG|AVR32JTAG|aWire) | + HAS_(SUFFER|VTARG_SWITCH|VTARG_ADJ) +) { /* Constants */ yylval = new_constant(yytext); return TKN_NUMBER; } @@ -175,7 +172,6 @@ eeprom { yylval=NULL; return K_EEPROM; } eeprom_instr { yylval=NULL; ccap(); return K_EEPROM_INSTR; } enablepageprogramming { yylval=NULL; ccap(); return K_ENABLEPAGEPROGRAMMING; } errled { yylval=NULL; ccap(); return K_ERRLED; } -extra_features { yylval=NULL; ccap(); return K_EXTRA_FEATURES; } family_id { yylval=NULL; ccap(); return K_FAMILY_ID; } flash { yylval=NULL; return K_FLASH; } flash_instr { yylval=NULL; ccap(); return K_FLASH_INSTR; }