Пример #1
0
void		ast_while_print(s_ast_node *node, FILE *fs, unsigned int *node_id)
{
  unsigned int	lhs_id, rhs_id, cur_id;

  if (node->type != T_WHILE)
    return;
  fprintf(fs, "%u [label = \"while\"];\n", cur_id = *node_id);
  lhs_id = ++*node_id;
  ast_print_node(node->body.child_while.cond, fs, node_id);
  fprintf(fs, "%u -> %u\n", cur_id, lhs_id);
  rhs_id = *node_id;
  ast_print_node(node->body.child_while.exec, fs, node_id);
  fprintf(fs, "%u -> %u\n", cur_id, rhs_id);
}
Пример #2
0
void		ast_pipe_print(s_ast_node *node, FILE *fs, unsigned int *node_id)
{
  unsigned int	lhs_id, rhs_id, cur_id;

  if (node->type != T_PIPE)
    return;
  fprintf(fs, "%u [label = \"|\"];\n", cur_id = *node_id);
  lhs_id = ++*node_id;
  ast_print_node(node->body.child_pipe.lhs, fs, node_id);
  fprintf(fs, "%u -> %u\n", cur_id, lhs_id);
  rhs_id = *node_id;
  ast_print_node(node->body.child_pipe.rhs, fs, node_id);
  fprintf(fs, "%u -> %u\n", cur_id, rhs_id);
}
Пример #3
0
void		ast_bang_print(s_ast_node *node, FILE *fs, unsigned int *node_id)
{
    unsigned int	lhs_id, cur_id;

    if (node->type != T_BANG)
        return;
    fprintf(fs, "%u [label = \"!\"];\n", cur_id = *node_id);
    lhs_id = ++*node_id;
    ast_print_node(node->body.child_bang.lhs, fs, node_id);
    fprintf(fs, "%u -> %u\n", cur_id, lhs_id);
}
Пример #4
0
void ast_print_level(ast_node_t *ast_node, int level) {
    ast_node_t * aux_son;

    if (ast_node != NULL) {
        ast_print_node(ast_node, level);
        if (ast_node->son) {
            aux_son = ast_node->son;
            while (aux_son != NULL) {
                ast_print_level(aux_son, level + 1);
                aux_son = aux_son->next;
            }
        }
    }
}