gpt4 book ai didi

c++ - 如何从 Bison 行动访问类(class)成员

转载 作者:行者123 更新时间:2023-11-30 04:36:29 25 4
gpt4 key购买 nike

我正在从一个成员函数中调用 yyparse。如何从 bison 操作访问成员变量/函数。

我目前正在做

%{
#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);
}

最佳答案

您可以设置 bison 来接受参数:

%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();
}

关于c++ - 如何从 Bison 行动访问类(class)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com