def requireClj(filename, stopafter=None): """Compiles and executes the code in a clj file. If `stopafter` is given, then stop execution as soon as the `stopafter` name is defined in the current namespace of the compiler. """ with open(filename) as fl: r = StringReader(fl.read()) RT.init() comp = Compiler() comp.setFile(filename) with threadBindings({currentCompiler: comp}): #, open(filename + ".cljc", "w") as o: try: while True: EOF = object() s = read(r, False, EOF, True) if s is EOF: break #cPickle.dump(s, o) try: res = comp.compile(s) comp.executeCode(res) if stopafter is not None and hasattr( comp.getNS(), stopafter): break except Exception as exp: print s, filename raise except IOError as e: pass
def requireClj(filename, stopafter="concat"): with open(filename) as fl: r = StringReader(fl.read()) RT.init() comp = Compiler() comp.setFile(filename) pushThreadBindings({currentCompiler: comp}) #o = open(filename+".cljc", "w") try: while True: EOF = object() s = read(r, False, EOF, True) if s is EOF: break #cPickle.dump(s, o) try: res = comp.compile(s) print s, res comp.executeCode(res) if stopafter is not None and hasattr(comp.getNS(), stopafter): break except Exception as exp: print s, filename raise except IOError as e: pass finally: popThreadBindings()
def requireClj(filename, stopafter=None): with open(filename) as fl: r = StringReader(fl.read()) RT.init() comp = Compiler() comp.setFile(filename) pushThreadBindings({currentCompiler: comp}) #o = open(filename+".cljc", "w") try: while True: EOF = object() s = read(r, False, EOF, True) if s is EOF: break #cPickle.dump(s, o) try: res = comp.compile(s) comp.executeCode(res) if stopafter is not None: if hasattr(comp.getNS(), stopafter): break except Exception as exp: print s, filename raise except IOError as e: pass finally: popThreadBindings()
def requireClj(filename, stopafter=None): """Compiles and executes the code in a clj file. If `stopafter` is given, then stop execution as soon as the `stopafter` name is defined in the current namespace of the compiler. """ with open(filename) as fl: r = StringReader(fl.read()) RT.init() comp = Compiler() comp.setFile(filename) with threadBindings({currentCompiler: comp}): #, open(filename + ".cljc", "w") as o: try: while True: EOF = object() s = read(r, False, EOF, True) if s is EOF: break #cPickle.dump(s, o) try: res = comp.compile(s) comp.executeCode(res) if stopafter is not None and hasattr(comp.getNS(), stopafter): break except Exception as exp: print s, filename raise except IOError as e: pass
def requireClj(filename, stopafter=None): with open(filename) as fl: r = StringReader(fl.read()) RT.init() comp = Compiler() comp.setFile(filename) currentCompiler.set(comp) try: while True: s = read(r, True, None, True) try: res = comp.compile(s) comp.executeCode(res) if stopafter is not None: if hasattr(comp.getNS(), stopafter): break except IOError as exp: print s raise exp while True: ch = r.read() if ch == "": raise IOError() if ch not in [" ", "\t", "\n", "\r"]: r.back() break except IOError as e: pass
def main(): RT.init() comp = Compiler() currentCompiler.set(comp) if not sys.argv[1:]: import clojure.repl clojure.repl.run_repl(comp) else: for x in sys.argv[1:]: if x.endswith(".clj"): requireClj(x)
def main(): """Main entry point to clojure-py. """ def gobble(option, opt_str, value, parser): """Interprets all the remaining arguments as a single argument. """ setattr(parser.values, option.dest, " ".join(parser.rargs)) del parser.rargs[:] parser = OptionParser( usage="%prog [options] ... [-c cmd | file | -] [arg] ...", version=VERSION_MSG) parser.add_option("-c", action="callback", dest="cmd", default="", callback=gobble, help="program passed in as a string (terminates option list)") parser.add_option("-i", action="store_true", dest="interactive", help="inspect interactively after running script") parser.add_option("-q", action="store_true", dest="quiet", help="don't print version message on interactive startup") # fooling OptionParser parser.add_option("--\b\bfile", action="store_true", help=" program read from script file") parser.add_option("--\b\b-", action="store_true", help=" program read from stdin (default; interactive mode if a tty)") parser.add_option("--\b\barg ...", action="store_true", help=" arguments passed to program in *command-line-args*") args = sys.argv[1:] try: i = args.index("-") except ValueError: i = len(args) dash_and_post = args[i:] opts, command_line_args = parser.parse_args(args[:i]) source = command_line_args.pop(0) if command_line_args else None command_line_args.extend(dash_and_post) opts.command_line_args = command_line_args RT.init() comp = Compiler() command_line_args_sym = findItem(Namespace("clojure.core"), Symbol("*command-line-args*")) with threadBindings({currentCompiler: comp, command_line_args_sym: command_line_args}): if source: requireClj(source) if opts.interactive or not source and not opts.cmd: import clojure.repl clojure.repl.enable_readline() clojure.repl.run_repl(opts, comp)
def main(): RT.init() comp = Compiler() pushThreadBindings({currentCompiler: comp}) try: if not sys.argv[1:]: import clojure.repl clojure.repl.enable_readline() clojure.repl.run_repl(comp) else: for x in sys.argv[1:]: if x.endswith('.clj'): requireClj(x) finally: popThreadBindings()
def main(): requireClj(os.path.dirname(__file__) + "/core.clj") RT.init() comp = Compiler() currentCompiler.set(comp) comp.setNS(symbol("user")) if not sys.argv[1:]: while True: try: line = raw_input(comp.getNS().__name__ + "=> ") except EOFError: break if not line: continue while unbalanced(line): try: line += raw_input('.' * len(comp.getNS().__name__) + '.. ') except EOFError: break # Propogate break from above loop. if unbalanced(line): break r = StringReader(line) s = read(r, True, None, True) try: res = comp.compile(s) print comp.executeCode(res) except Exception: traceback.print_exc() else: for x in sys.argv[1:]: requireClj(x)
def requireClj(filename, stopafter=None): with open(filename) as fl: r = StringReader(fl.read()) RT.init() comp = Compiler() comp.setFile(filename) currentCompiler.set(comp) # o = open(filename+".cljc", "w") try: while True: s = read(r, False, None, True) if s is None: break # cPickle.dump(s, o) try: res = comp.compile(s) comp.executeCode(res) if stopafter is not None: if hasattr(comp.getNS(), stopafter): break except Exception as exp: print s, filename raise while True: ch = r.read() if ch == "": raise IOError() if ch not in [" ", "\t", "\n", "\r"]: r.back() break except IOError as e: pass
def setUp(self): RT.init() self.comp = Compiler() currentCompiler.set(self.comp) self.comp.setNS(symbol('clojure.core'))
def main(): """Main entry point to clojure-py. """ def gobble(option, opt_str, value, parser): """Interprets all the remaining arguments as a single argument. """ setattr(parser.values, option.dest, " ".join(parser.rargs)) del parser.rargs[:] parser = OptionParser( usage="%prog [options] ... [-c cmd | file | -] [arg] ...", version=VERSION_MSG) parser.add_option( "-c", action="callback", dest="cmd", default="", callback=gobble, help="program passed in as a string (terminates option list)") parser.add_option("-i", action="store_true", dest="interactive", help="inspect interactively after running script") parser.add_option( "-q", action="store_true", dest="quiet", help="don't print version message on interactive startup") # fooling OptionParser parser.add_option("--\b\bfile", action="store_true", help=" program read from script file") parser.add_option( "--\b\b-", action="store_true", help=" program read from stdin (default; interactive mode if a tty)" ) parser.add_option( "--\b\barg ...", action="store_true", help=" arguments passed to program in *command-line-args*") args = sys.argv[1:] try: i = args.index("-") except ValueError: i = len(args) dash_and_post = args[i:] opts, command_line_args = parser.parse_args(args[:i]) source = command_line_args.pop(0) if command_line_args else None command_line_args.extend(dash_and_post) opts.command_line_args = command_line_args RT.init() comp = Compiler() command_line_args_sym = findItem(Namespace("clojure.core"), Symbol("*command-line-args*")) with threadBindings({ currentCompiler: comp, command_line_args_sym: command_line_args }): if source: requireClj(source) if opts.interactive or not source and not opts.cmd: import clojure.repl clojure.repl.enable_readline() clojure.repl.run_repl(opts, comp)