我是Go编程语言的新手,我已经完成了创建和解释器的任务,但是遇到了以下问题:
我想定义一个环境为:
type Environment struct{
parent Environment
symbol string
value RCFAEValue
}
func (env Environment) lookup(lookupSymbol string) RCFAEValue{
if lookupSymbol == env.symbol{
return env.value
} //if parent != nill {
return env.parent.lookup(lookupSymbol)
}
但是我收到错误“无效的递归类型环境”。根据我的研究,我将父级更改为* Environment。但是现在,当我需要创建一个环境类型为var的新环境时,会收到错误消息“无法将fun_Val.ds(类型为Environment)用作* Environment in field value”。我正在创建环境,如下所示:
Environment{fun_Val.ds,fun_Val.param,exp.arg_exp.interp(env)}
我试图将这篇文章中的代码量限制在一定范围内,但是如果您需要更多代码或有其他问题,请告诉我。
杨__羊羊
aluckdog
相关分类