要将结构体传递给Yacc文件中的函数,您可以按照以下步骤操作:
%{
struct my_struct {
int value1;
char value2;
};
%}
%{
void my_function(struct my_struct *s);
%}
expression:
NUMBER {
struct my_struct s;
s.value1 = $1;
s.value2 = 'a';
my_function(&s);
}
%{
void my_function(struct my_struct *s) {
printf("Value 1: %d\n", s->value1);
printf("Value 2: %c\n", s->value2);
}
%}
这样,当Yacc解析器遇到一个数字时,它将调用my_function
函数并传递一个包含两个值的结构体。
注意:在这个示例中,我们使用了Yacc的内部变量$1
来获取规则的第一个元素。您可以根据需要使用其他内部变量。
领取专属 10元无门槛券
手把手带您无忧上云