public override SemanticCheckResult VisitId(ASTIdNode Id) { Id.SemanticCheckResult.Ensure(CompilationUnit.TypeEnvironment.GetTypeForObject(Id.SymbolTable, Id.Name, out var type), new Lazy <Error>(() => new Error($"Missing declaration from object {Id.Name}.", ErrorKind.NameError, Id.Token.Line, Id.Token.Column))); Id.SemanticCheckResult.EnsureReturnType(type); return(Id.SemanticCheckResult); }
public ASTCILNode VisitId(ASTIdNode Id) { Id.SymbolTable.IsDefObject(Id.Name, out var info); if (info.Kind == ObjectKind.Atribute) { return(new ASTCILGetAttrNode(info)); } if (info.Kind == ObjectKind.Self) { return(new ASTCILSelfNode()); } return(new ASTCILIdNode(info)); }
public override ASTNode VisitAssignment([NotNull] SuperCOOLParser.AssignmentContext context) { var result = new ASTAssingmentNode(); ASTExpressionNode exp = (ASTExpressionNode)context.expression().Accept(this); AssignSymbolTable(exp); ASTIdNode id = new ASTIdNode() { Token = context.OBJECTID().Symbol }; AssignSymbolTable(id); result.Id = id; result.Expresion = exp; result.AssigmentToken = context.ASSIGNMENT().Symbol; return(result); }
public virtual T VisitId(ASTIdNode Id) { return(default(T)); }