Это мой первый опыт в BISON, и я застреваю, пытаясь понять, как взять полный отчет, например, astros = 2
. Всякий раз, когда я пытаюсь это сделать, я не получаю никакого результата. Но если я пробую каждую часть отдельно, я получаю вывод для каждой части. Мой код выглядит следующим образом, только часть его, конечно:BISON и YACC - Как ввести полное заявление
.y файла
%token ASSIGNMENT
%token <intToken> INTNUMBER
%token <intToken> INTTOKEN
%type <statement> STATEMENT
STATEMENT: '\n'
| INTTOKEN STATEMENT {printf("Token");}
| INTNUMBER STATEMENT {printf("Number");}
| STATEMENT ASSIGNMENT STATEMENT{printf("Assinging");}
| INTTOKEN '\t' ASSIGNMENT '\t' INTNUMBER STATEMENT {printf("FULL STATEMENT COMPLETE");}
|error {yyerror("ERROR");}
Мой .l файл:
"=" return ASSIGNMENT;
[0-9]+ { ECHO; yylval.integer = atoi(yytext); return INTNUMBER; }
[a-fA-F]+[a-zA-Z]+ { ECHO; yylval.variableInteger = yytext; return INTTOKEN; }
Кроме того, если кто-то может объяснить мне, как с правилами тогда это будет здорово. Может быть, так, я могу это понять сам.
Возможно, вам стоит взглянуть на [flex manual] (http://flex.sourceforge.net/manual/Simple-Examples.html#Simple-Examples) или книгу Джона Левина о Bison и Flex (O ' Reilly). – rici