public void Visit(ASTNode_Application node) { node.procedureNode.AcceptVisitor(this); foreach (var n in node.actualNodes) { n.AcceptVisitor(this); } }
public void Visit(ASTNode_Application node) { node.procedureNode.AcceptVisitor(this); var p = (Procedure)Value; var actuals = new List <object>(); foreach (var e in node.actualNodes) { e.AcceptVisitor(this); actuals.Add(Value); } Value = p(actuals); }
public void Visit(ASTNode_Application node) { mTailFlag.Push(false); node.procedureNode.AcceptVisitor(this); mTailFlag.Pop(); foreach (var n in node.actualNodes) { mTailFlag.Push(false); n.AcceptVisitor(this); mTailFlag.Pop(); } if (mTailFlag.All(b => b)) { ByteCodes.Add(ByteCodeEnum.TAIL_CALL); } else { ByteCodes.Add(ByteCodeEnum.CALL); } ByteCodes.Add(node.actualNodes.Count); }
public void Visit(ASTNode_Application node) { node.procedureNode.AcceptVisitor(this); var p = (Procedure)Value; var actuals = new List<object>(); foreach (var e in node.actualNodes) { e.AcceptVisitor(this); actuals.Add(Value); } Value = p(actuals); }
public void Visit(ASTNode_Application node) { node.procedureNode.AcceptVisitor(this); foreach (var n in node.actualNodes) n.AcceptVisitor(this); }
public void Visit(ASTNode_Application node) { mTailFlag.Push(false); node.procedureNode.AcceptVisitor(this); mTailFlag.Pop(); foreach (var n in node.actualNodes) { mTailFlag.Push(false); n.AcceptVisitor(this); mTailFlag.Pop(); } if (mTailFlag.All(b => b)) { ByteCodes.Add(ByteCodeEnum.TAIL_CALL); } else { ByteCodes.Add(ByteCodeEnum.CALL); } ByteCodes.Add(node.actualNodes.Count); }