Exemplo n.º 1
0
# vim:fileencoding=gbk

import argparse
import sys
import antlr3
import antlr3.tree
from CMinusLexer import CMinusLexer
from CMinusParser import CMinusParser
from llvmCompiler import LLVMCompiler

parser = argparse.ArgumentParser()
parser.add_argument('filename', help='the name of script file')
parser.add_argument('-O', '--optimize', action='store_true', help='optimize the bytecode')
parser.add_argument('-v', '--verbose', action='store_true', help='output the bytecode to ll file')
args = parser.parse_args()

istream = antlr3.ANTLRFileStream(args.filename, 'utf-8')
lexer = CMinusLexer(istream)
parser = CMinusParser(antlr3.CommonTokenStream(lexer))
meta = parser.program()

compiler = LLVMCompiler(meta)
compiler.compile(args.optimize)
if args.verbose: 
    compiler.dump(args.filename + '.ll')
compiler.run()
Exemplo n.º 2
0
# vim:fileencoding=gbk

import argparse
import sys
import antlr3
import antlr3.tree
from CMinusLexer import CMinusLexer
from CMinusParser import CMinusParser
from llvmCompiler import LLVMCompiler

parser = argparse.ArgumentParser()
parser.add_argument("filename", help="the name of script file")
parser.add_argument("-O", "--optimize", action="store_true", help="optimize the bytecode")
parser.add_argument("-v", "--verbose", action="store_true", help="output the bytecode to ll file")
args = parser.parse_args()

istream = antlr3.ANTLRFileStream(args.filename, "utf-8")
lexer = CMinusLexer(istream)
parser = CMinusParser(antlr3.CommonTokenStream(lexer))
meta = parser.program()

compiler = LLVMCompiler(meta)
compiler.compile(args.optimize)
if args.verbose:
    compiler.dump(args.filename + ".ll")
compiler.run()
Exemplo n.º 3
0
import sys
import antlr3
import stringtemplate3
from CMinusParser import CMinusParser
from CMinusLexer import CMinusLexer

if len(sys.argv) == 2:
    templateFileName = "Java.stg"
    inputFileName = sys.argv[1]

elif len(sys.argv) == 3:
    templateFileName = sys.argv[1]
    inputFileName = sys.argv[2]

else:
    sys.stderr.write(repr(sys.argv) + '\n')
    sys.exit(1)
    
templates = stringtemplate3.StringTemplateGroup(
    file=open(templateFileName, 'r'),
    lexer='angle-bracket'
    )

cStream = antlr3.ANTLRFileStream(inputFileName)
lexer = CMinusLexer(cStream)
tStream = antlr3.CommonTokenStream(lexer)
parser = CMinusParser(tStream)
parser.templateLib = templates
r = parser.program()
print r.st.toString()