public override IPExpr VisitRvalue(PParser.RvalueContext context) { // If it's just an expr, then there's no special handling if (context.linear == null) { return(Visit(context.expr())); } // In the linear case, it must be a local variable or parameter var varName = context.iden().GetText(); if (!table.Lookup(varName, out Variable variable)) { throw handler.MissingDeclaration(context.iden(), "variable", varName); } return(context.linear.Text.Equals("move") ? new LinearAccessRefExpr(context, variable, LinearType.Move) : new LinearAccessRefExpr(context, variable, LinearType.Swap)); }
public override IPExpr VisitRvalue(PParser.RvalueContext context) { return(Visit(context.expr())); }