Subversion Repositories Kolibri OS

Rev

Rev 1913 | Go to most recent revision | 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.     if exists(py):
  19.         if not exists(tpc) or mtime(py) > mtime(tpc):
  20.             s = load(py)
  21.             code = _compile(s,py)
  22.             save(tpc,code)
  23.     if not exists(tpc): raise
  24.     code = load(tpc)
  25.     g = {'__name__':name,'__code__':code}
  26.     g['__dict__'] = g
  27.     MODULES[name] = g
  28.     exec(code,g)
  29.     return g
  30. def _init():
  31.     BUILTINS['compile'] = _compile
  32.     BUILTINS['import'] = _import
  33.  
  34. def import_fname(fname,name):
  35.     g = {}
  36.     g['__name__'] = name
  37.     MODULES[name] = g
  38.     s = load(fname)
  39.     code = _compile(s,fname)
  40.     g['__code__'] = code
  41.     exec(code,g)
  42.     return g
  43.  
  44. def tinypy():
  45.     return import_fname(ARGV[0],'__main__')
  46.  
  47. def main(src,dest):
  48.     s = load(src)
  49.     r = _compile(s,src)
  50.     save(dest,r)
  51.  
  52. if __name__ == '__main__':
  53.     main(ARGV[1],ARGV[2])
  54.