modify the code to implement a parser for the following grammer: S -> a, B, c B - > (bb)*, [c] import sys tokenindex = -1 token = "abcd" seen = [] def main(): try: parser() except RuntimeError as e: print(e) def parser():
Please modify the code to implement a parser for the following grammer:
S -> a, B, c
B - > (bb)*, [c]
import sys
tokenindex = -1
token = "abcd"
seen = []
def main():
try:
parser()
except RuntimeError as e:
print(e)
def parser():
advance()
S()
if token != '':
print('Garbage following <S>-string')
else:
print("Success, it's a valid language.")
def advance():
global tokenindex, token
#move tokenindex to next token
tokenindex += 1
if len(sys.argv) < 2 or tokenindex >= len(sys.argv[1]):
token = ""
else:
token = sys.argv[1][tokenindex]
seen.append(token)
def S():
A()
C()
def A():
consume('a')
consume('b')
def C():
if token == 'c':
advance()
C()
elif token == 'd':
advance()
else:
raise RuntimeError('Error at index: ' + str(tokenindex) + '. After seeing ' + "".join(seen)[:-1] + ' was expecting c or d')
def consume(expected_token):
if expected_token == token:
advance()
else:
raise RuntimeError('After seeing ' + str(seen) + ' was expecting '+ expected_token + ' but found ' + token)
main()
To Run the code in replit, open 'Shell' and type 'python main.py aabcd' and hit enter. 'aabcd' is an example input string. You could change it with your own.
The given code is the implementation of a simple parser for the following grammar:
S -> AC
A -> ab
C -> cC
C -> d
![](/static/compass_v2/shared-icons/check-mark.png)
Step by step
Solved in 2 steps
![Blurred answer](/static/compass_v2/solution-images/blurred-answer.jpg)
![Computer Networking: A Top-Down Approach (7th Edi…](https://www.bartleby.com/isbn_cover_images/9780133594140/9780133594140_smallCoverImage.gif)
![Computer Organization and Design MIPS Edition, Fi…](https://www.bartleby.com/isbn_cover_images/9780124077263/9780124077263_smallCoverImage.gif)
![Network+ Guide to Networks (MindTap Course List)](https://www.bartleby.com/isbn_cover_images/9781337569330/9781337569330_smallCoverImage.gif)
![Computer Networking: A Top-Down Approach (7th Edi…](https://www.bartleby.com/isbn_cover_images/9780133594140/9780133594140_smallCoverImage.gif)
![Computer Organization and Design MIPS Edition, Fi…](https://www.bartleby.com/isbn_cover_images/9780124077263/9780124077263_smallCoverImage.gif)
![Network+ Guide to Networks (MindTap Course List)](https://www.bartleby.com/isbn_cover_images/9781337569330/9781337569330_smallCoverImage.gif)
![Concepts of Database Management](https://www.bartleby.com/isbn_cover_images/9781337093422/9781337093422_smallCoverImage.gif)
![Prelude to Programming](https://www.bartleby.com/isbn_cover_images/9780133750423/9780133750423_smallCoverImage.jpg)
![Sc Business Data Communications and Networking, T…](https://www.bartleby.com/isbn_cover_images/9781119368830/9781119368830_smallCoverImage.gif)