daily pastebin goal
41%
SHARE
TWEET

Untitled

a guest Aug 10th, 2018 66 in 1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "arvore.h"
  4. #include "y.tab.h"
  5.  
  6. no_arvore * criar_no_expressao(int op, void *dir, void *esq) {
  7.     no_arvore *novo = (no_arvore *)  malloc(sizeof(no_arvore));
  8.     novo->tipo = EXPR;
  9.     novo->dado.expr =  criar_expressao(op, dir, esq);
  10.     return novo;
  11. }
  12.  
  13. /*a direita e esquerda são do tipo void pois podem ser tanto número quanto
  14. ID, então pode receber dos 2 tempos*/
  15. t_expr * criar_expressao(int op, void *dir, void *esq) {
  16.     t_expr * novo = (t_expr *) malloc(sizeof(t_expr));
  17.     novo->op = op;
  18.     novo->dir = dir;
  19.     novo->esq = esq;
  20.     return novo;
  21. }
  22.  
  23. no_arvore * criar_no_atribuicao(simbolo *resultado, void *expressao) {
  24.     no_arvore *novo = (no_arvore *)  malloc(sizeof(no_arvore));
  25.     novo->tipo = ATTR;
  26.     novo->dado.attr =  criar_atribuicao(resultado, expressao);
  27.     return novo;
  28. }
  29. /* Simbolo *resultado se refere ao identificador onde a expressão será salva */
  30. t_attr * criar_atribuicao(simbolo *resultado, void *expressao){
  31.     t_attr * novo = (t_attr *) malloc(sizeof(t_attr));
  32.     novo->resultado = resultado;
  33.     novo->expressao = expressao;
  34.     return novo;
  35. }
  36.  
  37.  
  38. no_arvore * criar_no_statement(void *stmt) {
  39.     no_arvore *novo = (no_arvore *)  malloc(sizeof(no_arvore));
  40.     novo->tipo = STMT;
  41.     novo->dado.stmt =  criar_statement(stmt);
  42.     return novo;
  43. }
  44. t_stmt * criar_statement(void *stmt){
  45.     t_stmt * novo = (t_stmt *) malloc(sizeof(t_stmt));
  46.     novo->declaracao = stmt;
  47.     return novo;
  48. }
  49.  
  50.  
  51. no_arvore * criar_no_statements(void *stmts, void *stmt) {
  52.     no_arvore *novo = (no_arvore *)  malloc(sizeof(no_arvore));
  53.     novo->tipo = STMTS;
  54.     novo->dado.stmts =  criar_statements(stmts, stmt);
  55.     return novo;
  56. }
  57. t_stmts * criar_statements(void *stmts, void *stmt){
  58.     t_stmts * novo = (t_stmts *) malloc(sizeof(t_stmts));
  59.     novo->declaracao_d = stmt;
  60.     novo->declaracao_e = stmts;
  61.     return novo;
  62. }
  63.  
  64. no_arvore * criar_no_bloco(void* stmts) {
  65.     no_arvore *novo = (no_arvore *)  malloc(sizeof(no_arvore));
  66.     novo->tipo = BLOCO;
  67.     novo->dado.bloco =  criar_bloco(stmts);
  68.     return novo;
  69. }
  70. t_bloco * criar_bloco(void* stmts){
  71.     t_bloco * novo = (t_bloco *) malloc(sizeof(t_bloco));
  72.     novo->conteudo = stmts;
  73.     return novo;
  74. }
  75.  
  76.  
  77. no_arvore * criar_no_program(void *program_e, void *program_d) {
  78.     no_arvore *novo = (no_arvore *)  malloc(sizeof(no_arvore));
  79.     novo->tipo = PROGRAM;
  80.     novo->dado.program =  criar_program(program_e, program_d);
  81.     return novo;
  82. }
  83. t_program * criar_program(void *program_e, void *program_d){
  84.     t_program * novo = (t_program *) malloc(sizeof(t_program));
  85.     novo->program_d = program_d;
  86.     novo->program_e = program_e;
  87.     return novo;
  88. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top