Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8534 → Rev 8535

/programs/develop/tinypy/tinypy/core/py2bc.py
0,0 → 1,62
import sys
if not "tinypy" in sys.version:
from boot import *
 
import tokenize,parse,encode
 
def _compile(s,fname):
tokens = tokenize.tokenize(s)
t = parse.parse(s,tokens)
r = encode.encode(fname,s,t)
return r
 
def _import(name):
if name in MODULES:
return MODULES[name]
py = name+".py"
tpc = name+".tpc"
if exists(py):
if not exists(tpc) or mtime(py) > mtime(tpc):
s = load(py)
code = _compile(s,py)
save(tpc,code)
if not exists(tpc): raise
code = load(tpc)
g = {'__name__':name,'__code__':code}
g['__dict__'] = g
MODULES[name] = g
exec(code,g)
return g
def _init():
BUILTINS['compile'] = _compile
BUILTINS['import'] = _import
 
def import_fname(fname,name):
g = {}
g['__name__'] = name
MODULES[name] = g
s = load(fname)
code = _compile(s,fname)
g['__code__'] = code
exec(code,g)
return g
 
def tinypy():
return import_fname(ARGV[0],'__main__')
 
def main(src,dest):
s = load(src)
r = _compile(s,src)
save(dest,r)
 
if __name__ == '__main__':
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])
main(ARGV[1],ARGV[2])