struct node { string str;//flag =0 double num;//flag =1 int flag; }; stack<node> SEM; int t_value ; void CEQ(char ch) {//四元式 t_value++; char t_value_char = '0' + t_value; string t = "t"; t.append(1, t_value_char); node m1 = SEM.top(); SEM.pop(); node m2 = SEM.top(); SEM.pop(); cout << "(" << ch << " "; if (m2.flag == 0) { cout << m2.str; } if (m2.flag == 1) { cout << m2.num; } cout << ","; if (m1.flag == 0) { cout << m1.str ; } if (m1.flag == 1) { cout << m1.num ; } cout<<","<<t<<")"<<endl; node m3; m3.flag = 0; m3.str = t; SEM.push(m3); }
时间: 2024-04-03 22:34:39 浏览: 131
Struts之数值计算演示
这段代码定义了一个结构体 `node`,其中包含一个字符串和一个浮点数,以及一个整型标志 `flag`。另外还定义了一个 `stack` 对象 `SEM`,用于存储 `node` 类型的数据。还有一个整型变量 `t_value` 和一个 `void` 类型的函数 `CEQ`。
函数 `CEQ` 接收一个字符参数 `ch`,用于表示要执行的操作。函数中首先对 `t_value` 进行自增操作,并将其转换为字符类型。然后创建一个字符串 `t`,并在其后面添加一个字符 `t_value_char`,用于表示临时变量名。
接着从 `SEM` 中取出两个 `node` 类型的数据 `m1` 和 `m2`,并打印出对应的四元式。最后创建一个新的 `node` 类型的数据 `m3`,将其标志设置为 0,字符串设置为 `t`,并将其压入 `SEM` 中。
这段代码中的 `CEQ` 函数用于生成中间代码的四元式。
阅读全文