internal override void ResolveTypes(VariableScope varScope, PastelCompiler compiler) { this.Value = this.Value.ResolveType(varScope, compiler); if (!PType.CheckAssignment(this.Type, this.Value.ResolvedType)) { throw new ParserException(this.Value.FirstToken, "Cannot assign this type to a " + this.Type); } varScope.DeclareVariables(this.VariableNameToken, this.Type); }
public void ResolveTypes(PastelCompiler compiler) { VariableScope varScope = new VariableScope(this); for (int i = 0; i < this.ArgTypes.Length; ++i) { varScope.DeclareVariables(this.ArgNames[i], this.ArgTypes[i]); } for (int i = 0; i < this.Code.Length; ++i) { this.Code[i].ResolveTypes(varScope, compiler); } }
public void ResolveTypes(PastelCompiler compiler) { Dictionary <string, VariableDeclaration> globals = compiler.SharedScope == null ? compiler.Globals : compiler.SharedScope.Globals; VariableScope varScope = new VariableScope(this, globals); for (int i = 0; i < this.ArgTypes.Length; ++i) { varScope.DeclareVariables(this.ArgNames[i], this.ArgTypes[i]); } for (int i = 0; i < this.Code.Length; ++i) { this.Code[i].ResolveTypes(varScope, compiler); } }
public void ResolveTypes(PastelCompiler compiler) { Dictionary <string, VariableDeclaration> globals = new Dictionary <string, VariableDeclaration>(compiler.Globals); foreach (PastelCompiler includedScope in compiler.IncludedScopes) { Common.Util.MergeDictionaryInto <string, VariableDeclaration>(includedScope.Globals, globals); } VariableScope varScope = new VariableScope(this, globals); for (int i = 0; i < this.ArgTypes.Length; ++i) { varScope.DeclareVariables(this.ArgNames[i], this.ArgTypes[i]); } for (int i = 0; i < this.Code.Length; ++i) { this.Code[i].ResolveTypes(varScope, compiler); } }