У меня есть лексический анализатор, написанный на flex, который передает токены моему парсеру, написанному на бизоне.
Вот небольшая часть моего лексера:
ID [a-z][a-z0-9]*
%%
rule {
printf("A rule: %s\n", yytext);
return RULE;
}
{ID} {
printf( "An identifier: %s\n", yytext );
return ID;
}
"(" return LEFT;
")" return RIGHT;
Есть и другие битыдля анализа пробелов и т. д.
Тогда часть синтаксического анализатора выглядит следующим образом:
%{
#include <stdio.h>
#include <stdlib.h>
#define YYSTYPE char*
%}
%token ID RULE
%token LEFT RIGHT
%%
rule_decl :
RULE LEFT ID RIGHT { printf("Parsing a rule, its identifier is: %s\n", $2); }
;
%%
Все работает нормально, но я просто хочу распечатать токен ID с помощью printf - вот и все:).Я не пишу компилятор ... просто flex / bison - хорошие инструменты для моего программного обеспечения.Как вы собираетесь печатать токены?Я просто получаю (null)
, когда печатаю.
Спасибо.