Subversion Repositories Kolibri OS

Rev

Rev 1913 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1913 jaeger 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])