/// <summary> /// Push a function scope /// </summary> /// <param name="type"></param> public void PushFuncScope(string name, TFunc type, IEnumerable <Tuple <string, T> > parameters, Position pos) { // Clear the dynamic id. dynamicId = 0; scopes.Push(new FuncScope(name, string.Format("__{0}_return", name), type)); ASTEnv = new AST.Env(); /// Add all the parameter to the environment. foreach (var p in parameters) { scopes.Peek().AddSymbol(new EObj(dynamicId.ToString(), p.Item1, p.Item2, pos, SymbolEntry.Link.NONE, EObj.Storage.AUTO)); ASTEnv.AddParam(dynamicId.ToString(), p.Item1, p.Item2); dynamicId++; } }