Mercurial > lcfOS
view python/testc3.py @ 166:da0087b82fbe
Improved type checking
author | Windel Bouwman |
---|---|
date | Fri, 22 Mar 2013 16:15:31 +0100 |
parents | 598d3888a11c |
children | 0b5b2ee6b435 |
line wrap: on
line source
import c3 import time, ppci, x86, ir testsrc = """package test; var u32 c, d; var double e; var int f; const int A = 1337.; function void test1() { var u32 bdd; var int a = 10; bd = 20; var int buf; var int i; i = 2; var int zero = i - 2; if (i > 1) { buf = b + 22 * i - 13 + (55 * 2 *9-2) / 44 - 1; } else { ;;; } t2(2, 3); } function int t2(u32 a, u32 b) { if (a > 0) { a = 2 + t2(a - 1); } return a + b; } function int t3(int aap, int blah) { if (a > blah and blah < 45 + 33 or 33 > aap or 6 and true) { a = 2 + t2(a - 1); } return a + b; } var int hahaa = 23 * 2; """ def c3compile(src, diag): # Structures: builder = c3.Builder(diag) ir = builder.build(src) # optional optimize here x86gen = x86.X86CodeGen(diag) ok = len(diag.diags) == 0 if not ok: print('Not generating code') return print('generating x86 code') x86gen.genBin(ir) with open('dummydummy.asm', 'w') as f: f.write('bits 64\n') for a in x86gen.asm: print(a) f.write(str(a) + '\n') def do(): diag = ppci.DiagnosticsManager() c3compile(testsrc, diag) do()