我们编译原理有一个对pl/0编译器改造的三级项目,在网上我找到一篇帖子,里面有一段这个函数
北陌流歌 2020-10-17 11:58:00 int expression(bool* fsys, int* ptx, int lev,int index)
{
enum symbol addop; /* 用于保存正负号 */
bool nxtlev[symnum];
if(sym==plus || sym==minus) /* 开头的正负号,此时当前表达式被看作一个正的或负的项 */
{
addop = sym; /* 保存开头的正负号 */
getsymdo;
memcpy(nxtlev, fsys, sizeof(bool)*symnum);
nxtlev[plus] = true;
nxtlev[minus] = true;
termdo(nxtlev, ptx, lev); /* 处理项 */
if (addop == minus)
{
gendo(opr,0,1); /* 如果开头为负号生成取负指令 */
}
}
else /* 此时表达式被看作项的加减 */
{
memcpy(nxtlev, fsys, sizeof(bool)*symnum);
nxtlev[plus] = true;
nxtlev[minus] = true;
termdo(nxtlev, ptx, lev); /* 处理项 */
}
while (sym==plus || sym==minus)
{
addop = sym;
getsymdo;
memcpy(nxtlev, fsys, sizeof(bool)*symnum);
nxtlev[plus] = true;
nxtlev[minus] = true;
termdo(nxtlev, ptx, lev); /* 处理项 */
if (addop == plus)
{
gendo(opr, 0, 2); /* 生成加法指令 */
}
else
{
gendo(opr, 0, 3); /* 生成减法指令 */
}
}
return 0;
}我想问问这个index参数有啥用啊