Skip to content

Commit

Permalink
try except
Browse files Browse the repository at this point in the history
  • Loading branch information
Rebecca committed Mar 27, 2019
1 parent 69eaedc commit d3b8c07
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions Parser/ll1.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import os
# parse table
parse_table = {
("E","("):["T","E'"],
("E","id"):["T","E'"],
Expand All @@ -13,22 +15,28 @@
("F","("):["(","#",")"],
("F","id"):["id"],
}

# inputting string
string = input("Enter input string from chars [ id , + , * ] separating each char by white space : ").split(" ") + ["$"]

# creating stack
stack = ["E","$"]

# printing stack operations
print("STACK".center(15,' '),"INPUT".center(15,' '),"MATCHED".center(15,' '),"ACTION".center(15,' '))
print("".ljust(15,'-'),"".rjust(15,'-'),"".center(15,'-'),"".center(15,'-'))
print(" "*5+"".join(stack[::-1]).ljust(10,' '),"".join(string).rjust(12,' ')+" "*3,"".center(15,' '),"".center(15,' '))

while len(stack)>1:
# found a match
if stack[0] == string[0]:
x = stack[0]
stack, string = stack[1:], string[1:]
print(" "*5+"".join(stack[::-1]).ljust(10,' '),"".join(string).rjust(12,' ')+" "*3,x.center(15,' '),"Matched {0}".format(x).center(15,' '))
else:
x, y = stack[0], parse_table[(stack[0],string[0])]
stack = parse_table[(stack[0],string[0])] + stack[1:]
if stack[0] == '#':stack = stack[1:]
print(" "*5+"".join(stack[::-1]).ljust(10,' '),"".join(string).rjust(12,' ')+" "*3,"".center(15,' '),"{0} -> {1}".format(x,"".join(y)).center(15,' '))
# checking for substitution
try:
x, y = stack[0], parse_table[(stack[0],string[0])]
stack = parse_table[(stack[0],string[0])] + stack[1:]
if stack[0] == '#':stack = stack[1:]
print(" "*5+"".join(stack[::-1]).ljust(10,' '),"".join(string).rjust(12,' ')+" "*3,"".center(15,' '),"{0} -> {1}".format(x,"".join(y)).center(15,' '))
except:
os.system('clear')
print("Given string cannot be parsed by this parser. String does not belong to this grammar ")
break

0 comments on commit d3b8c07

Please sign in to comment.