summaryrefslogtreecommitdiffstats
path: root/lib/grammar_sandbox.c
blob: 807ada9d98271b9438533bac71dfb1c094dfe433 (plain)
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
#include "command.h"
#include "command_parse.h"
#include "cmdtree.h"

#define GRAMMAR_STR "CLI grammar sandbox\n"

struct graph_node * nodegraph;

DEFUN (grammar_test,
       grammar_test_cmd,
       "grammar parse .COMMAND",
       GRAMMAR_STR
       "command to pass to new parser\n")
{
  size_t linesize = 0;
  for (int i = 0; i < argc; i++)
    linesize += strlen(argv[i]) + 1;

  char* cat = malloc(linesize);
  cat[0] = '\0';
  for (int i = 0; i < argc; i++) {
    strcat(cat, argv[i]);
    if (i != argc)
      strcat(cat, " ");
  }

  //struct graph_node *result = new_node(NUL_GN);
  cmd_parse_format_new((const char*) cat, "lol", nodegraph);
  walk_graph(nodegraph, 0);

  return CMD_SUCCESS;
}

DEFUN (grammar_test_show,
       grammar_test_show_cmd,
       "grammar tree",
       GRAMMAR_STR
       "print current accumulated DFA\n")
{
   walk_graph(nodegraph, 0);
   return CMD_SUCCESS;
}


void grammar_sandbox_init(void);
void grammar_sandbox_init() {
  fprintf(stderr, "reinitializing graph\n");
  nodegraph = new_node(NUL_GN);
  install_element (ENABLE_NODE, &grammar_test_cmd);
  install_element (ENABLE_NODE, &grammar_test_show_cmd);
}