Mercurial > lcfOS
view python/zcc.py @ 220:3f6c30a5d234
Major change in expression parsing to enable pointers and structs
author | Windel Bouwman |
---|---|
date | Sat, 06 Jul 2013 21:32:20 +0200 |
parents | 1fa3e0050b49 |
children | 81752b0f85a5 |
line wrap: on
line source
#!/usr/bin/python import sys, argparse import c3, ppci, codegen import codegenarm from transform import CleanPass import outstream # Parse arguments: parser = argparse.ArgumentParser(description='lcfos Compiler') parser.add_argument('source', type=argparse.FileType('r'), \ help='the source file to build') parser.add_argument('-d', '--dumpir', action='store_true', help="Dump IR-code") parser.add_argument('-o', '--output', help='Output file', metavar='filename') def main(args): # Front end: src = args.source.read() args.source.close() diag = ppci.DiagnosticsManager() c3b = c3.Builder(diag) ircode = c3b.build(src) if not ircode: diag.printErrors(src) sys.exit(1) # Optimization passes: cp = CleanPass() cp.run(ircode) if args.dumpir: ircode.dump() # Code generation: #cg = codegen.CodeGenerator(arm_cm3.armtarget) outs = outstream.TextOutputStream() cg = codegenarm.ArmCodeGenerator(outs) obj = cg.generate(ircode) if args.dumpir: outs.dump() if args.output: output_filename = args.output else: output_filename = 'lc.output' # TODO: store data if __name__ == '__main__': arguments = parser.parse_args() main(arguments)