Example #1
0
def run(s):
    out = cStringIO.StringIO()
    il.run(*il_gen.generate(Parser().parse(s, lexer=Lexer())), stdout=out)
    return out.getvalue()
Example #2
0
    try:
        mods = il.generate(typed)
    except il.IlGenException, e:
        print >> sys.stderr, e
        return 4

    if config.mode == IL and config.visualize:
        for mod in mods.modules.values():
            for fn in mod.functions:
                print fn.dotty()
        return 0
    elif config.mode == IL:
        print mods
        return 0

    il.run(mods)
    return 0


def indent(string, prefix):
    return '\n'.join(prefix + line for line in string.split("\n"))


def dotty(config):
    try:
        tokens = frontend.tokenize(config.input)
    except frontend.SileLexError, e:
        print >> sys.stderr, e
        return 1
    try:
        ast = frontend.parse(tokens)
Example #3
0
            params.append(result)
        params.reverse()
        for i, p in enumerate(params):
            blk.insts += [il.Inst(il.IPRM, len(params) - 1 - i, p, 0)]
        return blk

    def Int(self, node, result, blk):
        blk.insts += [il.Inst(il.IMM, node, 0, result)]
        return blk

    # ------------------------------------------------------------------------ #


if __name__ == "__main__":

    print il.run(*generate(Parser().parse(""" print 2*3/(4-5*(12*32-15)) """, lexer=Lexer())))
    print il.run(*generate(Parser().parse(""" print 1 + 2 - (3+4) """, lexer=Lexer())))
    print il.run(*generate(Parser().parse(""" print 2 """, lexer=Lexer())))
    print il.run(
        *generate(
            Parser().parse(
                """ x = (2*3/(4-5*(12*32-15)))
        print x
        y = x + 3
        print y
        z = y + 4
        print z
        print x + y + z""",
                lexer=Lexer(),
            )
        )