我从成员函数调用yyparse。 如何从野牛行动中访问成员变量/功能。
我目前正在做
%{
#include "myclass.h"
#include "parse.tab.hh"
MyClass *ptr=NULL;
void MyClass::evaluate(string expression)
{
ptr=this;
yy_scan_string(expression.c_str());
yyparse();
}
%}
%%
EXPR : EXPR PLUS EXPR {
$$ = ptr->memberFunction("+",$1,$3);
}
答案 0 :(得分:2)
您可以设置野牛接受参数:
%parse-param {MyClass* self}
%lex-param {MyClass* self}
%{
void MyClass::evaluate(string expression)
{
yy_scan_string(expression.c_str());
yyparse(this); /* %parse-param allows a parameter to yyparse */
}
%}
%%
EXPR : EXPR PLUS EXPR {$$ = self->memberFunction("+",$1,$3);}
%%
int yylex(MyClass* self) /* Controlled by %lex-param */
{
return self->lex();
}