public ContextModel(ContextModel parent) { // Guarda el contexto padre y el índice Parent = parent; if (Parent == null) { ScopeIndex = 0; } else { ScopeIndex = Parent.ScopeIndex + 1; } // Crea las tablas de variables y funciones VariablesTable = new Variables.TableVariableModel(this); FunctionsTable = new Functions.TableFunctionsModel(this); }
/// <summary> /// Obtiene recursivamente la tabla de variables del contexto /// </summary> public Variables.TableVariableModel GetVariablesRecursive() { Variables.TableVariableModel table = new Variables.TableVariableModel(this); // Añade las variables del padre if (Parent != null) { table = Parent.GetVariablesRecursive(); } // Añade / sustituye las variables propias foreach (System.Collections.Generic.KeyValuePair <string, Variables.VariableModel> item in VariablesTable.GetAll()) { table.Add(item.Value); } // Devuelve la colección de tablas return(table); }