Alien-SmokeQt

 view release on metacpan or  search on metacpan

generator/parser/codegenerator.cpp  view on Meta::CPAN

}

void CodeGenerator::visitInitializerClause(InitializerClauseAST* node)
{
  if (node->initializer_list) {
    m_output << "{";
    visitCommaPrint(node->initializer_list);
    m_output << "}";

  } else {
    visit(node->expression);
  }
}

void CodeGenerator::visitJumpStatement(JumpStatementAST* node)
{
  print(node->op, true);
  print(node->identifier);
  m_output << ";";
}

void CodeGenerator::visitLabeledStatement(LabeledStatementAST* node)
{
  print(node->label, true);

  visit(node->expression);

  m_output << ":";

  visit(node->statement);
}

void CodeGenerator::visitLinkageBody(LinkageBodyAST* node)
{
  m_output << "{";

  DefaultVisitor::visitLinkageBody(node);

  m_output << "}";
}

void CodeGenerator::visitLinkageSpecification(LinkageSpecificationAST* node)
{
  printToken(Token_extern, true);
  print(node->extern_type, true);

  DefaultVisitor::visitLinkageSpecification(node);
}

void CodeGenerator::visitMemInitializer(MemInitializerAST* node)
{
  visit(node->initializer_id);

  m_output << "(";
  visit(node->expression);
  m_output << ")";
}

void CodeGenerator::visitName(NameAST* node)
{
  if (node->global)
    printToken( Token_scope );

  if (node->qualified_names) {
    commaPrintNodes( this, node->qualified_names, token_text( Token_scope ) );
    printToken( Token_scope );
  }

  visit(node->unqualified_name);
}

void CodeGenerator::visitNamespace(NamespaceAST* node)
{
  printToken( Token_namespace, true );

  print(node->namespace_name);

  DefaultVisitor::visitNamespace(node);
}

void CodeGenerator::visitNamespaceAliasDefinition(NamespaceAliasDefinitionAST* node)
{
  printToken( Token_namespace, true );

  print(node->namespace_name);

  m_output << "=";

  DefaultVisitor::visitNamespaceAliasDefinition(node);

  m_output << ";";
}

void CodeGenerator::visitNewDeclarator(NewDeclaratorAST* node)
{
  visit(node->ptr_op);
  visit(node->sub_declarator);
  surroundPrintNodes(this, node->expressions, "[", "]");
}

void CodeGenerator::visitNewExpression(NewExpressionAST* node)
{
  print(node->scope_token);
  print(node->new_token, true);

  if (node->expression) {
    m_output << "(";
    visit(node->expression);
    m_output << ")";
  }

  if (node->type_id) {
    m_output << "(";
    visit(node->type_id);
    m_output << ")";
  }

  visit(node->new_type_id);
  visit(node->new_initializer);
}



( run in 1.105 second using v1.01-cache-2.11-cpan-e1769b4cff6 )