本文整理汇总了C++中Stmt::newlabel方法的典型用法代码示例。如果您正苦于以下问题:C++ Stmt::newlabel方法的具体用法?C++ Stmt::newlabel怎么用?C++ Stmt::newlabel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stmt
的用法示例。
在下文中一共展示了Stmt::newlabel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: block
//<复合语句>::= [<常量说明部分>][<变量说明部分>]<语句列>
void Parser::block(ifstream &file, Stmt &s) {
if (look.tag == CONST) {
constDecls(file);
}
else if (look.tag == INT || look.tag == FLOAT || look.tag == CHAR)
varDecls(file);
stmts(file, s);
int i = 0, label = s.newlabel();
vector<Quadruple>::iterator iter;
for (iter = s.code.begin(); iter != s.code.end(); ++iter, ++i) {
if (((*iter).op == ">=" || (*iter).op == ">" || (*iter).op == "<="
|| (*iter).op == "<" || (*iter).op == "!=" || (*iter).op == "=="
|| (*iter).op == "goto") && (*iter).jumpTo == -1) {
s.code[i].jumpTo = label;
s.code[i].quadstring += intToString(label);
}
}
Quadruple q;
q.label = label;
q.quadstring = "L" + intToString(q.label) + ":";
s.code.push_back(q);
}