/* SHS: Syntactically Homogeneous Shell * Copyright (C) 2019 Aidan Hahn * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package ast type VarTable map[string]*Token func (VarTable vt) GetVar(arg string) *Token { val, ok := vt[arg] if !ok { return nil } return val } // Library represents variables defined in inner scope // It is assumed library is ordered from innermost scope to outermost scope func GetVar(arg string, library []VarTable) *Token { var res *Token res = nil for i := 0; i < len(library); i += 1 { res = library[i].GetVar(arg) if res != nil { // TODO: Log scope res was found in? break } } return res }