Exemplo n.º 1
0
def main():
    while True:
        if len(sys.argv) == 3:
            if sys.argv[1] == '-d':
                break
            else:
                print("usage is py -3 WAE.py -d p1.ram")
                exit()
        else:
            print("number of arguments is less")
            print("usage is py -3 WAE.py -d p1.ram")
            exit()

    filename = sys.argv[2]
    # filename = "p1.ram"
    with open(filename) as file_object:
        lines = file_object.readlines()

    tree = list()
    registers_list = []

    for line in lines:
        if line != '\n':
            tree.append(parser.parse(line))
            registers_list += populate(line)

    pprint(tree)
    registers = {registers_list[i]: 0 for i in range(0, len(registers_list))}
    init, instructions = instruction(tree)
    pprint(instructions)
    print("\nINIT VALUES: \n ", init)
    # print(registers)
    # print(tree)
    eval_expression(registers, instructions, init)
    exit()
Exemplo n.º 2
0
def main():
    while True:
        data = read_input()
        if data == 'exit;':
            break
        try:
            tree = parser.parse(data)
        except Exception as inst:
            print(inst.args[0])
            continue
        print(tree)
        # inOrderTraversal(tree)
        if tree[0] == 'FV':
            print(free_variables(tree[1]))

        elif tree[0] == 'ALPHA':
            print(alpha(tree[1], tree[2]))

        elif tree[0] == 'substitute':
            print(substitution(tree[1], tree[2], tree[3]))

        else:
            while True:
                found, tree = beta_reduction(tree)
                if not found:
                    break
                print("beta: ", tree)

        # print()
            tree = eval(tree)
            print("beta: ", tree)
Exemplo n.º 3
0
def main():
    filename = sys.argv[1]
    with open(filename) as fp:
        waes = fp.readlines()
    file = open(r"Driver.scala", 'a')
    lines = [
        'object Driver extends App { \n', '''import WAE._

''', 'val d = Map[String,Double]() \n'
    ]
    for l in lines:
        file.write(l)
    for (idx, wae) in enumerate(waes):
        try:
            tree = parser.parse(wae)
            if tree is not None:
                exp = eval(tree)
                file.write('val e' + str(idx) + ' = ' + exp)
                file.write('\n')
                file.write('println(eval(e' + str(idx) + ',d))')
                file.write("\n \n")
            else:
                print("else")
        except Exception as abcd:
            print(abcd)
            break

    file.write('} \n')
    file.close()
Exemplo n.º 4
0
def main():
    while True:
        data = read_input()
        if data == 'exit;':
            break
        try:
            tree = parser.parse(data)
        except Exception as inst:
            print(inst.args[0])
            continue
        print(tree)
def main():
    while True:
        data = read_input()
        if data == 'exit;':
            break
        try:
            if parser.parse(data):
                print("ACCEPT: No Repeated With-Vars")
            else:
                print("REJECT: Repeated With-Vars")
        except Exception as inst:
            print(inst.args[0])
            continue
def main():
    while True:
        data = read_input()
        if data == 'exit;':
            break
        try:
            if parser.parse(data):
                print("ACCEPT: CAN EVALUATE")
            else:
                print("REJECT: CANNOT EVALUATE")
        except Exception as inst:
            print(inst.args[0])
            continue
Exemplo n.º 7
0
def main():
    while True:
        data = read_input()
        if data == 'exit;':
            break
        try:
            tree = parser.parse(data)
        except Exception as inst:
            print(inst.args[0])
            continue
        # print(tree)
        try:
            answer = eval_expression(tree)
            if answer == 'ERROR':
                print('\nEVALUATION ERROR\n')
            else:
                print('\nThe value is ' + str(answer) + '\n')
        except:
            pass
Exemplo n.º 8
0
from WAEParser import parser

# data = '{+ 1 2};'
# data = '{+ x y};'
data = "{with {{x 5}{y 3}} {+ x y}};"
try:
    tree = parser.parse(data)
except Exception as inst:
    print(inst.args[0])
print(tree)

# ['with', [['x', ['num', 5.0]], ['y', ['num', 3.0]]], ['+', ['id', 'x'], ['id', 'y']]]