我有语法:
%token T_SHARE
%token T_COMMENT T_PUBLIC T_WRITEABLE T_PATH T_GUESTOK T_VALID_USERS
T_WRITE_LIST T_CREATE_MODE T_DIRECTORY_MODE
%union
{
int number;
char *string;
}
%token <string> T_STRING
%token <number> T_NUMBER T_STATE
%%
parameters:
|parameters parameter
;
parameter:
section_share
|comment
....
section_share:
'[' T_SHARE ']' {section_print(T_SHARE);}
;
comment:
T_COMMENT '=' T_STRING {print(2);parameter_print(T_COMMENT);}
;
函数打印是: void print(int arg) { printf("%d\n", arg); }
但它将 print 的参数“2”打印为其他值,如“8508438”,没有规则。为什么?