Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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));
 }