例如,我在 .ypp 中有这个声明:
%{
#include <iostream>
#include <stdlib.h>
#include "structs.h"
#include "func.h"
#define YYSTYPE Types
%}
%union Types{
int Integer;
bool Boolean;
Expression Exp;
};
在“structs.h”中我有:
typedef union{
string str;
int integer;
bool boolean;
} Value;
struct Expression {
int lineNum;
Value val;
};
在“func.h”中我有这个函数:
int binop(Types& a, Types& b); //assume all file needed included
我可以在 .ypp 中传递 $$ arg:
Exp : Exp Add Exp {$$.integer = binop($1, $2);}