Я изучаю бизона на примере стандартного калькулятора, где я пытаюсь добавить некоторые новые функции к уже написанному калькулятору. Я пытаюсь добавить функцию в свой калькулятор, где будет работать a + 1 = b.
в моем .y файле я должен объявить символы терминала:
%token <symbol> SYMBOL_NAME
%token <dval> NUMBER
%token LIST_VAR_COMMAND
%token LIST_CONST_COMMAND
%token LIST_FUNC_COMMAND
%token DELETE_COMMAND
%token QUIT_COMMAND
%token CLEAR_COMMAND
%token BINARY
%token OCTAL
%token DECIMAL
%token HEXADECIMAL
%token UNSIGNED
%token CHAR
%token SHORT
%token INT
%token LONG
%token FOR
Я заявляю, что мое заявление выглядит так:
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; }
| NUMBER { $$ = $1; }
| CHAR { $$ =(int)$1; }
Я получаю сообщение об ошибке в строке
| CHAR { $$ =(int)$1; }
говоря: $ 1 выражения не имеет объявленного типа
что я тут не так делаю?
Спасибо.