/// <summary> /// 初始化变量表 /// </summary> /// <param name="varTable">变量表</param> /// <param name="fourExpList">四元式列表</param> /// <param name="varNameList">变量表中变量名的列表</param> private void initVarTable(VarTable varTable, List <FourExp> fourExpList, List <string> varNameList) { short address = 0x0000; foreach (string varName in varNameList) { //初始化变量表中的变量地址和活跃信息域 varTable.SetAddr(varName, address); address += 4; //varTable.ClearRefeInfo(varName); varTable.ClearActInfo(varName); varTable.PushActInfo(varName, false); //varTable.PushRefeInfo(varName, -1); } //扫描四元式表,在变量表中填入相关信息 int count = fourExpList.Count; int length = count; for (int i = length; i != 0; i--) { string A = fourExpList[i].Result; string B = fourExpList[i].Arg1; string C = fourExpList[i].Arg2; if (A != "") { //varTable.PushRefeInfo(A, -1); varTable.PushActInfo(A, false); } if (B != "") { //varTable.PushRefeInfo(B, count); varTable.PushActInfo(B, true); } if (C != "") { //varTable.PushRefeInfo(C, count); varTable.PushActInfo(C, true); } count--; } }