输入:3+4*6 输出:27(当然中间包括LR(1)语法分析过程 程序提供主要为了给大家提供一些方便,你懂得。。。呵呵 如有问题,QQ:718561468 来自:大连理工大学软件学院 #include using namespace std; #include #include #include #include stringAnalyzeChart[16][11]= {//LR 文法的分析表 "s5", "e1", "e1", "s4", "e2", "e1", "1", "2", "3", "e1", "e1", "e3", "s6", "e1", "e3", "e2", "acc", "error", "error", "error", "s7", "e1", "e6", "r2", "s8", "e6", "r2", "r2", "error", "error", "error", "r2", "s9", "e6", "r4", "r4", "e6", "r4", "r4", "error", "error", "error", "r4", "r4", "s5", "e1", "e1", "s4", "e2", "e1", "10", "2", "3", "e1", "e1", "e5", "r6", "r6", "e3", "r6", "r6", "error", "error", "error", "r6", "r6", "s5", "e1", "e1", "s4", "e2", "e1", "error", "11", "3", "e1", "e1", "s5", "e1", "e1", "s4", "e2", "e1", "error", "12", "3", "e1", "e1", "s5", "e1", "e1", "s4", "e2", "e1", "error", "error", "13", "e1", "e1", "s5", "e1", "e1", "s4", "e1", "e1", "error", "error", "14", "e1", "e1", "e3", "s6", "e1", "e3", "s15", "r3", "error", "error", "error", "s9", "e1", "e6", "r1", "s8", "e6", "r1", "r1", "error", "error", "error", "r1", "s9", "e6", "r7", "s8", "e6", "r7", "r7", "error", "error", "error", "r7", "s9", "e6", "r3", "r3", "e6", "r3", "r3", "error", "error", "error", "r3", "r3", "e6", "r8", "r8", "e6", "r8", "r8", "error", "error", "error", "r8", "r8", "e6", "r5", "r5", "e6", "r5", "r5", "error", "error", "error", "r5", "r5", }; stack digit; queue digit1; queueinputid; char *FinalSymbol[6]= { "i","+","*","(",")","#"//终结符 }; char *UnfinalSymbol[5]= { "E","E'","T","T'","F"//非终结符 }; stackufstack;//状态栈 void initialize() { ufstack.push('0'); inputid.push(0); } char * keyword[6] = {"for","if","then",...