def init_clp(): parser = argparse.ArgumentParser( description='parses a grammar and validates syntatically user entries.') parser.add_argument('-g', '--grammar', metavar='grammar', type=str, help='the grammar file to be parsed.', dest='grammar', required=True) parser.add_argument('-f', '--file', metavar='source', type=str, dest='source', help='path to file containing the source code to be validated') return parser if __name__ == '__main__': parser = init_clp() args = parser.parse_args() source = sys.stdin lexer_g = grammar_parse.create_lexer() with open(args.grammar) as grammar_input: g_token_stream = lexer_g.lex_input(grammar_input.read()) grammar_ast = grammar_parse.parse_grammar(g_token_stream) print(str(grammar_ast)) g = Grammar() g.load_from_ast(grammar_ast) if args.source != None: with open(args.source) as code: s_token_stream = g.lexer.lex_input(code.read()) parse_grammar(g, s_token_stream) else: parse_grammar(g, g.lexer.lex_input(sys.stdin.read()))