Esempio n. 1
0
def main():
    try:
        options = GbsOptions(sys.argv)

    except OptionsException as exception:
        if exception.msg != '':
            report_error(exception.error_type(), exception.msg)
            sys.exit(1)
        else:
            usage()
    if options['version']:
        LOGGER.info(utils.version_number())
        sys.exit(0)
    elif options['help']:
        usage(0)
    elif options['license']:
        LOGGER.info(utils.read_file(LICENSE_FILE))
        sys.exit(0)
    elif options['keyset']:
        key_set = ["%s (%s)" % kv for kv in get_key_set()]
        LOGGER.info(i18n.i18n("Interactive program key set: %s") % (
                       "\n\t" + "\n\t".join(key_set),))
    elif options['src']:
        if options['names']:
            gobstones = lang.Gobstones(lang.GobstonesOptions(get_lang(options)))
            print json.dumps(gobstones.parse_names(options['src'], open(options['src']).read()))
        else:
            try:
                gbs_run = run_filename(options['src'], options)
            except SourceException as exception:
                report_program_error(exception.error_type(), exception.msg, exception.area)
                sys.exit(1)
            except GobstonesException as exception:
                report_error(i18n.i18n("%s Error") % ("Gobstones",), exception.msg)
                sys.exit(4)
            except Exception as exception:
                report_error(i18n.i18n("%s Error") % ("Python",), "Failed to execute %s file." % (options['src'],))
                logging.exception(str(exception))
                sys.exit(3)

            print_run(gbs_run, options)
            persist_run(gbs_run, options)
    else:
        usage()
Esempio n. 2
0
 def _read_bnf_from_file(self, filename):
     "Build the parser reading the BNF grammar from the given file."
     self._read_bnf(utils.read_file(filename))