aboutsummaryrefslogtreecommitdiff
path: root/test/parser.c
blob: 06a305ec06ed9896e8189780c4d44ddac2dc2ec6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "include/test.h"
#include "../src/include/pp.h"
#include "../src/include/lexer.h"
#include "../src/include/tree.h"
#include "../src/include/parser.h"

unsigned int TESTS_RUN = 0, TESTS_PASSED = 0;

int main(int argc, char** argv) {
   tree_t* tree_0;
   pp_t* pp;
   lexer_t* lexer;
   parser_t* parser;

   tree_0 = tree_init(TREE_TYPE_BLOCK);
      tree_t* treep_00 = tree_0->data.block.val = tree_init(TREE_TYPE_EXPR);
         tree_t* treep_01 = treep_00->data.expr.val = tree_init(TREE_TYPE_DEF);
            tree_t* treep_02 = treep_01->data.def.tag = tree_init(TREE_TYPE_TAG);
               treep_02->data.tag.val = "int";
               tree_t* treep_03 = treep_02->data.tag.nxt = tree_init(TREE_TYPE_TAG);
                  treep_03->data.tag.val = "f";
                  treep_03->data.tag.nxt = NULL;
            treep_01->data.def.arg = NULL;
            tree_t* treep_04 = treep_01->data.def.val = tree_init(TREE_TYPE_EXPR);
               tree_t* treep_05 = treep_04->data.expr.val = tree_init(TREE_TYPE_BLOCK);
                  tree_t* treep_06 = treep_05->data.block.val = tree_init(TREE_TYPE_EXPR);
                     tree_t* treep_07 = treep_06->data.expr.val = tree_init(TREE_TYPE_CALL);
                        treep_07->data.call.target = "a";
                        tree_t* treep_08 = treep_07->data.call.arg = tree_init(TREE_TYPE_CARG);
                           tree_t* treep_09 = treep_08->data.carg.val = tree_init(TREE_TYPE_EXPR);
                              tree_t* treep_10 = treep_09->data.expr.val = tree_init(TREE_TYPE_CALL);
                                 treep_10->data.call.target = "b";
                                 treep_10->data.call.arg = NULL;
                           treep_08->data.carg.nxt = NULL;
                  tree_t* treep_11 = treep_05->data.block.nxt = tree_init(TREE_TYPE_BLOCK);
                     tree_t* treep_12 = treep_11->data.block.val = tree_init(TREE_TYPE_EXPR);
                        tree_t* treep_13 = treep_12->data.expr.val = tree_init(TREE_TYPE_CALL);
                           treep_13->data.call.target = "c";
                           tree_t* treep_14 = treep_13->data.call.arg = tree_init(TREE_TYPE_CARG);
                              tree_t* treep_15 = treep_14->data.carg.val = tree_init(TREE_TYPE_EXPR);
                                 tree_t* treep_16 = treep_15->data.expr.val = tree_init(TREE_TYPE_CALL);
                                    treep_16->data.call.target = "d";
                                    treep_16->data.call.arg = NULL;
                              treep_14->data.carg.nxt = NULL;
                     treep_11->data.block.nxt = NULL;
      tree_0->data.block.nxt = NULL;

   /*
   
   [block]
      

   */

   char src_0[] = "" \
      ":int:f = {" \
      "a.b;" \
      "c.d"
      "}";

   pp = pp_init(src_0);
   pp_run(pp);

   lexer = lexer_init(pp->psrc);
   lexer_run(lexer);

   parser = parser_init(lexer->tokenl);
   parser_run(parser);

   ASSERT(tree_cmp(tree_0, parser->tree));

   pp_destroy(pp);
   parser_destroy(parser);
   lexer_destroy(lexer);

   TEST_REPORT;

   return 0;
}