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