在Bison Parser中声明变量的数量是可选的,可以根据需要自由选择要声明的变量数量。下面是一个示例:
%{
#include
%union { int iValue; char* sValue; }
%token
%% statement_list: statement_list statement | statement ;
statement: INT_TOKEN id_list ';' | STRING_TOKEN string_list ';' ;
id_list: id_list ',' ID | ID ;
string_list: string_list ',' STRING | STRING ;
%%
int main(int argc, char **argv) { if(argc < 2) { printf("Usage: %s input_file\n", argv[0]); exit(1); } FILE *inputFile;
if((inputFile = fopen(argv[1], "r")) == NULL) { printf("Unable to open input file %s\n", argv[1]); exit(1); }
yyin = inputFile;
yyparse();
fclose(inputFile);
printf("Parsing complete!\n");
return 0; }
在这个示例中,id_list和string_list都是可选的,因此它们的数量可以为零。这允许我们在Bison Parser中灵活地声明变量。