Exemplo n.º 1
0
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!")
Exemplo n.º 2
0
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!")
Exemplo n.º 3
0
    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)

Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
        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.")
Exemplo n.º 6
0
        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')
Exemplo n.º 7
0
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")