if args.derivation: output_derivation = True else: output_derivation = False if args.stack: output_stack = True else: output_stack = False if parse: parse_table = getParseTable() rulz = getRules() terminals = getTerminals() parser = Parser(rulz, terminals, parse_table, input_string) if output: op = open(args.output, 'w') # parser._parse(print_stack=False,print_derivation=False,print_symtables=False,op_file=op) parser._parse(print_stack=output_stack, print_derivation=output_derivation, print_symtables=output_tables, op_file=op, second_pass=True) op.close else: # parser._parse(print_stack=False,print_derivation=False,print_symtables=False) parser._parse(print_stack=output_stack, print_derivation=output_derivation, print_symtables=output_tables, second_pass=True)
with open('code_sample.txt') as file: input_string = file.read() # tokeniser = Lexer(input_string) # token = tokeniser.nextToken() # while token[0] != '$': # print(token) # token = tokeniser.nextToken() parse_table = getParseTable() rulz = getRules() terminals = getTerminals() parser = Parser(rulz, terminals, parse_table, input_string) parser._parse(False) parser._parse(print_stack=False, print_derivation=False, print_symtables=True, second_pass=True) # table = SymbolTable('table') # table.addSymbol('f1', 'function', ['float','int[2][2]', 'float']) # table.addSymbol('f2', 'function', ['float']) # table.addSymbol('class2', 'class', None) # table.addSymbol('var1','variable','int[2]') # table.printTable() # table2 = SymbolTable('otra_cosa') # table.printTable() # table2.printTable()
## Fill the table according to slide 4-18 for rule in rulz: for t in terminals: if t in rule._first: parse_table[rule._symbol][t] = rule if 'EPSILON' in rule._first: for t2 in terminals: if t2 in rule._follow: parse_table[rule._symbol][t2] = rule with open('code_sample_from_assignment.txt') as file: input_string = file.read() parser = Parser() parser._setInput(input_string) parser._parse(rulz, terminals, parse_table, print_stack=True) ############################################### ####### End parse table implementation ######## ############################################### ### ### ### ####### ##### ### # ############################################### #### Begin command line call implementation ### ###############################################