已知算术表达式文法G[E]:
E → E + T|T
T → T * F|F
F → ( E )|i
判断是否为LL(1)文法;如果是请编写一个递归下降LL(1)分析程序,
判断文法G所能接受的串。如果不是转换为LL(1)文法后,编写一个递归下降LL(1)分析程序。
Input 输入多行由终止符构成的算术表达式,输入EOF结束。
Output 判断每行输入的算术表达式,如果表达式在语法结构上是合法的,输出"syntax correct";否则输出"syntax error"。
输入样例
复制
i+i#
i+i+i++#
输出样例
复制
syntax correct
syntax error
数据范围与提示
消除左递归后的文法
E →TE1
E1→+TE1 | ε
T → FT1
T1→*F T1 | ε
F→(E)|i