def main(): # file_name = input() while True: command = input() task = command.split(' ')[0] if (task == "-h" or task == "--help"): print( "usage: main.py [-h] [--who | -f FILE]\n-h, --help show this help message and exit\n --who print out student IDs and NAMEs of authors\n -f FILE, --file FILE filename to process" ) break elif (task == "--who"): print("Evgeniia Onosovskaia, 281251") elif ((task == "-f" or task == "--file") and len(command.split(' ')) == 2): file_name = command.split(' ')[1] try: with open(file_name, 'r', encoding='utf-8') as INFILE: data = INFILE.read() lexer0 = lex.lex() lexer0.input(data) result = parser.parse(data, lexer=lexer0, debug=False) # print(result) outformat = "unicode" tree_print.treeprint(result, outformat) if (result is None): print("syntax OK") except: print("Some error in file reading occur. Try again!") else: print("Incorrect command, please try again!")
def parse_result(filename): try: with open(filename, 'r', encoding='utf-8') as INFILE: data = INFILE.read() lexer0 = lex.lex() lexer0.input(data) result = parser.parse(data, lexer=lexer0, debug=False) # print(result) outformat = "unicode" tree_print.treeprint(result, outformat) if (result is None): print("syntax OK") return result except: print("Some error in file reading occur. Try again!")
group = arg_parser.add_mutually_exclusive_group() group.add_argument('--who', action='store_true', help='who wrote this' ) group.add_argument('-f', '--file', help='filename to process') ns = arg_parser.parse_args() outformat = "dot" if ns.treetype: outformat = ns.treetype if ns.file is None: ns.file = "exs/04_semantics_run_examples_run_level4_test1.tupl" if ns.who == True: # identify who wrote this print( Udratov' ) elif ns.file is None: # user didn't provide input filename arg_parser.print_help() else: data = codecs.open( ns.file, encoding='utf-8' ).read() result = parser.parse(data, lexer=tokenizer.lexer, debug=False) if result is None: print( 'syntax OK' ) print("\n\n") tree_print.treeprint(result, outformat)
group.add_argument('--who', action='store_true', help='who wrote this') group.add_argument('-f', '--file', help='filename to process') ns = arg_parser.parse_args() outformat = "unicode" if ns.treetype: outformat = ns.treetype if ns.who == True: # identify who wrote this print('246258 Joonas Jäppinen') print('262767 Pino Surace') elif ns.file is None: # user didn't provide input filename arg_parser.print_help() else: data = codecs.open(ns.file, encoding='utf-8').read() ast_tree = parser.parse(data, lexer=popl_lex.lexer, debug=False) if ns.tree == True: treeprint(ast_tree, outformat) semdata = SemData() check_semantics(ast_tree, semdata) if semdata.errors: print("Semantic errors:") for err in semdata.errors: print(err) else: print("Semantics ok, running:") run_program(ast_tree, semdata)
value1 = node.child_coord2.value[0] value2 = node.child_coord2.value[2] value = [val1, val2, value1, value2] return value else: print("Error, unknown node of type " + nodetype) return None if __name__ == "__main__": import argparse, codecs arg_parser = argparse.ArgumentParser() arg_parser.add_argument('-f', '--file', help='filename to process') ns = arg_parser.parse_args() if ns.file is None: arg_parser.print_help() else: data = codecs.open(ns.file, encoding='utf-8').read() ast_tree = parser.parse(data, lexer=lexer.lexer, debug=False) semdata = SemData() semdata.in_function = None semantics_check.semantic_checks(ast_tree, semdata) tree_print.treeprint(ast_tree) print("Semantics ok.") run_program(ast_tree, semdata) semantics_check.print_symbol_table(semdata, "Symbol table") print("Program finished.")
semdata.parameters = {} def semantic_checks(tree): semdata = SemData() semdata.variable_def = [] semdata.parameters = {} semdata.funcs = {} visit_tree(tree, before_fun, after_fun, semdata) return semdata if __name__ == '__main__': import argparse, codecs arg_parser = argparse.ArgumentParser() group = arg_parser.add_mutually_exclusive_group() group.add_argument('--who', action='store_true', help='who wrote this') group.add_argument('-f', '--file', help='filename to process') ns = arg_parser.parse_args() if ns.who == True: print('259196 Nayeong Song') elif ns.file is None: arg_parser.print_help() else: data = codecs.open(ns.file, encoding='utf-8').read() result = parser.parse(data, lexer=lexer, debug=False) print('tree') treeprint(result) semantic_checks(result) if result is None: print('syntax OK')
import lexer import syntax import tree_print parser = syntax.parser from semantics_common import visit_tree, SymbolData, SemData from semantic_checks import semantic_checks, print_symbol_table from semantics_run import run_program if __name__ == "__main__": import argparse, codecs arg_parser = argparse.ArgumentParser() arg_parser.add_argument('-f', '--file', help='filename to process') ns = arg_parser.parse_args() if ns.file is None: arg_parser.print_help() else: data = codecs.open(ns.file, encoding='utf-8').read() ast_tree = parser.parse(data, lexer=lexer.lexer, debug=False) tree_print.treeprint(ast_tree) # Just for debugging semdata = SemData() semantic_checks(ast_tree, semdata) print_symbol_table(semdata, "Symbol table:") # Just for debugging print("Semantics ok:") run_program(ast_tree, semdata) print("Program done")