Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. print("Starting py2bc")
  2. if not (str(1.0) == "1"):
  3.     from boot import *
  4.  
  5. import tokenize,parse,encode
  6.  
  7. def _compile(s,fname):
  8.     tokens = tokenize.tokenize(s)
  9.     t = parse.parse(s,tokens)
  10.     r = encode.encode(fname,s,t)
  11.     return r
  12.  
  13. def _import(name):
  14.     if name in MODULES:
  15.         return MODULES[name]
  16.     py = name+".py"
  17.     tpc = name+".tpc"
  18.     print("CP")
  19.     if exists(py):
  20.         if not exists(tpc) or mtime(py) > mtime(tpc):
  21.             s = load(py)
  22.             code = _compile(s,py)
  23.             save(tpc,code)
  24.     if not exists(tpc): raise
  25.     code = load(tpc)
  26.     g = {'__name__':name,'__code__':code}
  27.     g['__dict__'] = g
  28.     MODULES[name] = g
  29.     exec(code,g)
  30.     return g
  31. def _init():
  32.     BUILTINS['compile'] = _compile
  33.     BUILTINS['import'] = _import
  34.  
  35. def import_fname(fname,name):
  36.     g = {}
  37.     g['__name__'] = name
  38.     MODULES[name] = g
  39.     s = load(fname)
  40.     code = _compile(s,fname)
  41.     g['__code__'] = code
  42.     exec(code,g)
  43.     return g
  44.  
  45. def tinypy():
  46.     print("tinypy called")
  47.     return import_fname(ARGV[0],'__main__')
  48.  
  49. def main(src,dest):
  50.     s = load(src)
  51.     r = _compile(s,src)
  52.     save(dest,r)
  53.  
  54. if __name__ == '__main__':
  55.     print("Running main")
  56.     main(ARGV[1],ARGV[2])
  57.