本文整理汇总了C++中Symtab::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ Symtab::begin方法的具体用法?C++ Symtab::begin怎么用?C++ Symtab::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symtab
的用法示例。
在下文中一共展示了Symtab::begin方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visit
void ByteCodeBackend::visit(IR_ProgNode* node)
{
Symtab* top = node->symtab()->top();
for (auto it = top->begin(); it != top->end(); ++it)
{
if (it->which() == Symbol::Const)
{
if (!m_blob.addConstant(it->data().classid(), it->data().serialize()))
M_error(node, "internal error: unable to add constant entry to blob");
}
}
// Generate bytecode for the whole program
node->siblings()[0]->accept(this);
}
示例2: visit
void ResolveConsts::visit(ConstNode* node)
{
Symtab* top = node->symtab()->top();
bool found = false;
int index = 0;
for (auto it = top->begin(); it != top->end(); ++it)
{
if (it->which() == Symbol::Const)
{
if (it->data().classid() == node->value.classid() &&
it->data().serialize() == node->value.serialize())
{
found = true;
break;
}
++index;
}
}
if (!found)
{
index = m_alloc_index++;
Symbol sym(Symbol::Const, Symbol::Global, "", node->value);
top->add(sym);
}
ConstRefNode* new_node = new ConstRefNode(node->startToken());
new_node->index = index;
node->exchangeWith(new_node);
delete node;
M_follow(new_node);
}