Subversion Repositories Kolibri OS

Rev

Details | 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
    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])