public override MIPSRegister VisitIdenExprNode(IdenExprNode n) { var iden = vars.IsInScope(n.name); if (iden.FirstSet) { return(iden.First); } var reg = GetMIPSRegister(); emit.EmitLoadStore("lw", reg, iden.Second, rm.SP); return(reg); }
public override object VisitIdenExprNode(IdenExprNode n) { string name = n.name; if (n.Type.Kind == TypeSymbol.TypeKind.FUNCTION) { if (n.Type.ParameterTypes.Count > 0) { name += $"`({n.Type.ParameterTypes.Select(ts => ts.Name).Aggregate((a, b) => $"{a},{b}")})"; } else { name += "`(void)"; } } semanticChecker.CheckAndReport(varTypes.IsInScope(name) != null, n.sourceLoc, $"Undeclared Variable {n.name}"); return(null); }
public override object VisitIdenExprNode(IdenExprNode n) { n.Type = varTypes.IsInScope(n.name); if (n.Type == null) { var funmatches = varTypes.GetPredicateMatches((s, ts) => ts.FunctionName != null && ts.FunctionName.StartsWith(n.name + "`")); if (funmatches.Count == 1) { n.Type = funmatches.ElementAt(0); } else if (funmatches.Count > 1) { n.Type = TypeSymbol.INFER_FROM_SYMBOL(n.name, funmatches); } } return(null); }
public override LLVMRegister VisitIdenExprNode(IdenExprNode n) { throw new NotImplementedException(); }
public object VisitIdenExprNode(IdenExprNode n) { WriteLine(n.kind + " - " + n.name + ":" + n.Type); return(null); }
public override LData VisitIdenExprNode(IdenExprNode n) { return(Vars.IsInScope(n.name)); }
public virtual T VisitIdenExprNode(IdenExprNode n) { return(default(T)); }