我有LR语法和LR表用于表达式,如(1 + 1),1 +(a + 1)
0:E' - > E
1:E - > E + T
2:E-> Ť
3:T - > T * F
4:T-> ˚F
5:F - >(E)
6:F-> ID
string[,] ActionTable =
//+ * ( ) id end E T F
{
{"" ,"" ,"S4" ,"" ,"S5" ,"" ,"1" ,"2" ,"3"}, // 0
{"S6" ,"" ,"" ,"" ,"" ,"AC" ,"" ,"" ,"" }, // 1
{"R2" ,"S7" ,"" ,"R2" ,"" ,"R2" ,"" ,"" ,""},//2
{"R4" ,"R4" ,"" ,"R4" ,"" ,"R4" ,"" ,"" ,""}, // 3
{"" ,"" ,"S4" ,"" ,"S5" ,"" ,"8" ,"2" ,"3"}, // 4
{"R6" ,"R6" ,"" ,"R6" ,"" ,"R6" ,"" ,"" ,""}, // 5
{"" ,"" ,"S4" ,"" ,"S5" ,"" ,"" ,"9" ,"3"}, // 6
{"" ,"" ,"S4" ,"" ,"S5" ,"" ,"" ,"" ,"10"},// 7
{"S6" ,"" ,"" ,"S11" ,"" ,"" ,"" ,"" ,""}, // 8
{"R1" ,"S7" ,"" ,"R1" ,"R1" ,"" ,"" ,"" ,""}, // 9
{"R3" ,"R3" ,"" ,"R3" ,"R3" ,"" ,"" ,"" ,""}, //10
{"R5" ,"R5" ,"" ,"R5" ,"R5" ,"" ,"" ,"" ,""} //11
};
我尝试检查表达式,如1 + 1或1+(1 * a)+ 1,但解析器表示此表达式不正确。
我可以用语法修复它吗?
答案 0 :(得分:1)
您没有数字生产规则。