public object VisitProgram(AST.Program program, object o) { DefineSTD(); program.Declarations.ForEach(item => item.Visit(this, null)); //call start function Emit(Machine.CALLop, 0, Machine.CBr, program.StartDeclaration.FunctionDeclaration.Address.Offset); Emit(Machine.HALTop, 0, 0, 0); return(null); }
public object VisitProgram(AST.Program program, object o) { DeclareSTD(); program.Declarations.ForEach(item => item.Visit(this, null)); if (idTable.StartFunction == null) { throw new Exception("Program must have a start function"); } else { program.StartDeclaration = idTable.StartFunction; } return(null); }
public void Encode(AST.Program p) { p.Visit(this, null); }