用Python语言编写输出结果为如下的代码:请输入字符串(以#号结束):i+i*i# 待分析 产生式 剩余 i E一>TE1 +i*i# i T->FT1 +i*i# i F->i +i*i# i+ T1->E i丰i# i+ E1->+TE1 i本i# i+i T->FT1 *i# i+i F->i *i# i+i* T1->FT1 i# i+i*i F->i # i+i*i# T1->E i+i*i#E1->RIGHT, AGAIN! 语法分析完毕!退出? y or n
时间: 2023-07-08 13:48:44 浏览: 85
以下是Python代码:
```
stack = ['#', 'E']
input_str = input("请输入字符串(以#号结束):")
i = 0
while True:
if stack[-1] == '#' and input_str[i] == '#':
print("RIGHT, AGAIN! 语法分析完毕!")
break
elif stack[-1] == input_str[i]:
stack.pop()
i += 1
else:
if stack[-1] == 'E':
if input_str[i] == 'i':
stack.pop()
stack.append('T')
stack.append('E1')
else:
print("WRONG! 退出语法分析!")
break
elif stack[-1] == 'E1':
if input_str[i] == '+':
stack.pop()
stack.append('T')
stack.append('E1')
stack.append('+')
else:
stack.pop()
elif stack[-1] == 'T':
if input_str[i] == 'i':
stack.pop()
stack.append('F')
stack.append('T1')
else:
print("WRONG! 退出语法分析!")
break
elif stack[-1] == 'T1':
if input_str[i] == '*':
stack.pop()
stack.append('F')
stack.append('T1')
stack.append('*')
else:
stack.pop()
elif stack[-1] == 'F':
if input_str[i] == 'i':
stack.pop()
stack.append('i')
else:
print("WRONG! 退出语法分析!")
break
else:
print("WRONG! 退出语法分析!")
break
answer = input("退出? y or n")
if answer == 'y':
exit()
```