Я хочу, чтобы мой парсер обрабатывал регистр как:
a='A'; // a should be set with ASCII(A) i.e 65
Моя декларация токена выглядит следующим образом:
%union {
double dval;
char *symbol;
}
%token <symbol> SYMBOL_NAME
%token <dval> NUMBER
%token BINARY
%token OCTAL
%token DECIMAL
%token HEXADECIMAL
%token UNSIGNED
%token <symbol>CHAR
%token SHORT
%token INT
%token LONG
объявление моего заявления выглядит так:
statement: ';'
| expression { setp($1); print_universal_base($1, 0); }
| expression BINARY { setp($1); print_universal_base($1, 2); }
| expression OCTAL { setp($1); print_universal_base($1, 8); }
| expression DECIMAL { setp($1); print_universal_base($1, 10); }
| expression HEXADECIMAL { setp($1); print_universal_base($1, 16); }
объявление моего выражения выглядит так:
expression: expression ',' expression { $$ = $3; }
| SYMBOL_NAME '=' expression { if(assign_value($1, $3, &$$)) YYABORT; }
| NUMBER { $$ = $1; }
| '\'' CHAR '\'' { if(set_ASCII($2, &$$)) YYABORT; }
не должен
'\'' CHAR '\'' { if(set_ASCII($2, &$$)) YYABORT; }
справиться с моим делом?
как я вижу, что, когда я ввожу как
a='A';
set_ASCII () не вызывается. что здесь не так?