public override void VisitForeachVar(ForeachVar x) { if (x != null) { _foreachVarCount++; } base.VisitForeachVar(x); }
public override void VisitForeachVar(ForeachVar x) { if (x.Alias) { ConsumeToken(Tokens.T_AMP, "&", x.Span.Start); } VisitElement(x.Target); }
public PhpTypeCode Emit(ForeachVar /*!*/ node, CodeGenerator codeGenerator) { var varuse = node.Variable; if (varuse != null) { return(varuse.Emit(codeGenerator)); } else { // other epxressions are handled in EmitAssign only return(PhpTypeCode.Unknown); // ignored } }
public void Analyze(ForeachVar /*!*/ node, Analyzer analyzer) { ExInfoFromParent info = new ExInfoFromParent(node); if (node.Alias) { info.Access = AccessType.WriteRef; } else { info.Access = AccessType.Write; } // retval not needed node.Expression.Analyze(analyzer, info); }
public PhpTypeCode EmitAssign(ForeachVar /*!*/ node, CodeGenerator codeGenerator) { // Object (or PhpReference) is on top of evaluation stack var varuse = node.Variable; if (varuse != null) { return(VariableUseHelper.EmitAssign(varuse, codeGenerator)); } else { var listex = node.List; if (listex != null) { return(listex.NodeCompiler <ListExCompiler>().EmitAssign(listex, codeGenerator)); } else { throw new InvalidOperationException(); } } }
private ForeachStmt /*!*/ CreateForeachStmt(Position pos, Expression /*!*/ enumeree, ForeachVar /*!*/ var1, Position pos1, ForeachVar var2, Statement /*!*/ body) { ForeachVar key, value; if (var2 != null) { key = var1; value = var2; if (key.Alias) { errors.Add(Errors.KeyAlias, SourceUnit, pos1); key.Alias = false; } } else { key = null; value = var1; } return(new ForeachStmt(pos, enumeree, key, value, body)); }
/// <summary> /// Visit foreach variable used for value and key. /// </summary> /// <param name="x"></param> virtual public void VisitForeachVar(ForeachVar x) { VisitElement(x?.Target); }
public override LangElement Foreach(Span span, LangElement enumeree, ForeachVar keyOpt, ForeachVar value, LangElement body) => CountLE(base.Foreach(span, enumeree, keyOpt, value, body));
ForeachVar CountFV(ForeachVar i) { _foreachVarCount++; return(i); }
public static PhpTypeCode EmitAssign(this ForeachVar /*!*/ node, CodeGenerator codeGenerator) { return(node.NodeCompiler <IForeachVarCompiler>().EmitAssign(node, codeGenerator)); }
public static void Analyze(this ForeachVar /*!*/ node, Analyzer analyzer) { node.NodeCompiler <IForeachVarCompiler>().Analyze(node, analyzer); }