Ejemplo n.º 1
0
def run(ast, args=[]):
  frame = Frame()
  ast = rewrite(ast, replace_nodes)
  log.final_ast("the final AST is:\n", ast)
  ast = rewrite(ast, populate_top_frame, frame=frame)
  log.topframe("the top frame is\n", frame)

  with frame as newframe:
    func = newframe['main']
    newframe['argc'] = Int(len(args))
    newframe['argv'] = Array(args)
    func.run(newframe)
Ejemplo n.º 2
0
def run(ast, args=['<progname>'], check_types=False):
    ast = rewrite(ast, replace_nodes)
    log.final_ast("the final AST is:\n", ast)

    frame = Frame()
    ast.eval(frame)
    log.topframe("the top frame is\n", frame)

    if 'main' not in frame:
        print("no main function defined, exiting")
        return 0

    # type inference
    if check_types:
        with frame as newframe:
            newframe['argc'] = Int(len(args))
            newframe['argv'] = Array(map(Str, args))
            main = newframe['main']
            main.infer_type(newframe)
            assert main.type.ret == Int, \
              "main() should return Int but got %s" % main.type.ret

    with frame as newframe:
        newframe['argc'] = Int(len(args))
        newframe['argv'] = Array(map(Str, args))
        r = newframe['main'].Call(newframe)

    if isinstance(r, Int):
        return r.to_int()
    else:
        return 0
Ejemplo n.º 3
0
def run(ast, args=['<progname>'], check_types=False):
  ast = rewrite(ast, replace_nodes)
  log.final_ast("the final AST is:\n", ast)

  frame = Frame()
  ast.eval(frame)
  log.topframe("the top frame is\n", frame)

  if 'main' not in frame:
    print("no main function defined, exiting")
    return 0

  # type inference
  if check_types:
    with frame as newframe:
      newframe['argc'] = Int(len(args))
      newframe['argv'] = Array(map(Str, args))
      main = newframe['main']
      main.infer_type(newframe)
      assert main.type.ret == Int, \
        "main() should return Int but got %s" % main.type.ret


  with frame as newframe:
    newframe['argc'] = Int(len(args))
    newframe['argv'] = Array(map(Str, args))
    r = newframe['main'].Call(newframe)

  if isinstance(r, Int):
    return r.to_int()
  else:
    return 0