def repl(): space = getspace() interp = Interpreter(space) print print '-=- Hippy -=-' print while True: try: line = raw_input("<? ") except EOFError: print break if not line.lstrip() or line.lstrip().startswith('//'): continue try: pc = parse(space, line, 0) bc = compile_ast("<input>", line, pc, space, print_exprs=True) except Exception, e: print >> sys.stderr, '%s: %s' % (e.__class__.__name__, e) continue try: interp.run_main(space, bc) except ExplicitExitException, e: os.write(1, e.message) sys.exit(e.code)
def repl(): space = getspace() interp = Interpreter(space) print print '-=- Hippy -=-' print while True: try: line = raw_input("<? ") except EOFError: print break if not line.lstrip() or line.lstrip().startswith('//'): continue try: pc = parse(space, line, 0, '<input>') bc = compile_ast("<input>", line, pc, space, print_exprs=True) except Exception, e: print >> sys.stderr, '%s: %s' % (e.__class__.__name__, e) continue try: interp.run_main(space, bc) except ExplicitExitException, e: os.write(1, e.message) sys.exit(e.code)
def compile_php(filename, source, space, interp=None): """Parse and compile a PHP file, starting in literal mode (i.e. dumping all input directly) until the first '<?' or '<?php'. Supports a mixture of blocks of code between the blocks of texts.""" phplexerwrapper = PHPLexerWrapper(source, filename, interp) if DEBUG: lst = [] while True: tok = phplexerwrapper.next() if tok is None: break else: lst.append(tok) print[x.__dict__ for x in lst] phplexerwrapper = iter(lst + [None]) parser = SourceParser(space, None, filename=filename) tokens = parser.parser.parse(phplexerwrapper, state=parser) bc = compile_ast(filename, source, tokens, space) return bc
else: endpos = self.lexer.pos w_end = self.interp.space.newint(endpos) self.interp.constants['__COMPILER_HALT_OFFSET__'] = w_end # return None DEBUG = False def compile_php(filename, source, space, interp=None): """Parse and compile a PHP file, starting in literal mode (i.e. dumping all input directly) until the first '<?' or '<?php'. Supports a mixture of blocks of code between the blocks of texts.""" phplexerwrapper = PHPLexerWrapper(source, filename, interp) if DEBUG: lst = [] while True: tok = phplexerwrapper.next() if tok is None: break else: lst.append(tok) print [x.__dict__ for x in lst] phplexerwrapper = iter(lst + [None]) parser = SourceParser(space, None, filename=filename) tokens = parser.parser.parse(phplexerwrapper, state=parser) bc = compile_ast(filename, source, tokens, space) return bc