def main(): usage = textwrap.dedent("""\ %prog [input file] If no input file is provided STDIN is used by default. """) parser = optparse.OptionParser(usage=usage) parser.add_option('-i', '--input', dest='file', help='Input file. Defaults to standard input.') parser.add_option('-c', '--coredump', action='store_true', dest='coredump', help='Print coredump to standard output.') parser.add_option('-d', '--disasm', action='store_true', dest='disasm', help='Print disassembled code to standard output.') parser.add_option('-t', '--trace', action='store_true', dest='trace', help='Print execution trace.') options, args = parser.parse_args() if options.file is not None: text = open(options.file).read() else: text = sys.stdin.read() assembler = BytecodeAssembler(AssemblerLexer(text)) assembler.parse() vm = VM(assembler, trace=options.trace) vm.execute() if options.coredump: vm.coredump() if options.disasm: vm.disassemble()
def _get_vm(self, text): from tinypie.lexer import AssemblerLexer from tinypie.assembler import BytecodeAssembler from tinypie.vm import VM assembler = BytecodeAssembler(AssemblerLexer(text)) assembler.parse() vm = VM(assembler) return vm