public void Visit(FuncBodyNode n) { var statements = (StatementsNode)n.GetChildren().Last(); statements.SymTable = n.SymTable; statements.Accept(this); }
public void Visit(FuncBodyNode n) { PrintDOTIDLabel(n); PrintDOTParentChild(n); foreach (var child in n.GetChildren()) { child.Accept(this); } }
public void Visit(FuncBodyNode n) { var children = n.GetChildren(); foreach (var child in children) { child.Accept(this); } }
public void Visit(FuncBodyNode n) { var table = (FunctionSymbolTableEntry)n.SymTable; var tag = Utils.GetTag(table); var r15 = Registers.R15; _writer.WriteTag(tag); _writer.WriteInstruction(Instructions.Sw, $"-4({FSPReg})", r15); var children = n.GetChildren(); foreach (var child in children) { child.Accept(this); } if (string.Equals(table.ReturnType.Lexeme, TypeConstants.VoidType)) { // Jump to return address _writer.WriteInstruction(Instructions.Lw, r15, $"-4({FSPReg})"); _writer.WriteInstruction(Instructions.Jr, r15); } }