示例#1
0
def frontend(args):
    """Generate the LLVM bitcode file."""
    bitcodes = []
    libs = set()
    noreturning_frontend = False

    def add_libs(lang):
        if lang in extra_libs():
            libs.add(extra_libs()[lang])

    if args.language:
        lang = languages()[args.language]
        if lang in ['boogie', 'svcomp', 'json']:
            noreturning_frontend = True

        add_libs(lang)
        frontend = frontends()[lang]
        for input_file in args.input_files:
            bitcode = frontend(input_file, args)
            if bitcode is not None:
                bitcodes.append(bitcode)

    else:
        for input_file in args.input_files:
            lang = languages()[os.path.splitext(input_file)[1][1:]]
            if lang in ['boogie', 'svcomp', 'json']:
                noreturning_frontend = True

            add_libs(lang)
            bitcode = frontends()[lang](input_file, args)
            if bitcode is not None:
                bitcodes.append(bitcode)

    if not noreturning_frontend:
        return link_bc_files(bitcodes, libs, args)
示例#2
0
文件: top.py 项目: smackers/smack
def frontend(args):
  """Generate the LLVM bitcode file."""
  bitcodes = []
  libs = set()
  noreturning_frontend = False
  
  def add_libs(lang):
    if lang in extra_libs():
      libs.add(extra_libs()[lang])

  if args.language:
    lang = languages()[args.language]
    if lang in ['boogie', 'svcomp', 'json']:
      noreturning_frontend = True

    add_libs(lang)
    frontend = frontends()[lang]
    for input_file in args.input_files:
      bitcode = frontend(input_file,args)
      if bitcode is not None:
        bitcodes.append(bitcode)
  
  else:
    for input_file in args.input_files:
      lang = languages()[os.path.splitext(input_file)[1][1:]]
      if lang in ['boogie', 'svcomp', 'json']:
        noreturning_frontend = True

      add_libs(lang)
      bitcode = frontends()[lang](input_file,args) 
      if bitcode is not None: 
        bitcodes.append(bitcode)
  
  if not noreturning_frontend:
    return link_bc_files(bitcodes,libs,args)
示例#3
0
文件: top.py 项目: smackers/smack
  def validate_input_file(file):
    """Check whether the given input file is valid, returning a reason if not."""

    file_extension = os.path.splitext(file)[1][1:]
    if not os.path.isfile(file):
      exit_with_error("Cannot find file %s" % file)

    if not os.access(file, os.R_OK):
      exit_with_error("Cannot read file %s" % file)

    elif not file_extension in languages():
      exit_with_error("Unexpected source file extension '%s'" % file_extension)
示例#4
0
    def validate_input_file(file):
        """Check whether the given input file is valid, returning a reason if not."""

        file_extension = os.path.splitext(file)[1][1:]
        if not os.path.isfile(file):
            exit_with_error("Cannot find file %s" % file)

        if not os.access(file, os.R_OK):
            exit_with_error("Cannot read file %s" % file)

        elif not file_extension in languages():
            exit_with_error("Unexpected source file extension '%s'" %
                            file_extension)