From 24eeb2825c9f755c92812ec3a257e6709ccb6576 Mon Sep 17 00:00:00 2001 From: katherine Date: Mon, 20 May 2019 19:23:47 -0700 Subject: implement analyse function anlyises the parse results to build a tree for deterministic parser generation --- src/analyse.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/analyse.h (limited to 'src/analyse.h') diff --git a/src/analyse.h b/src/analyse.h new file mode 100644 index 0000000..8e21db7 --- /dev/null +++ b/src/analyse.h @@ -0,0 +1,29 @@ +#ifndef CONFCONF_ANALYSE_H +#define CONFCONF_ANALYSE_H + +#include "tok.h" +#include "parse.h" + +#include + +/* 26 letters * 2 for case + 1 for '_' */ +#define ANALYSE_MAX_BRANCH (26 * 2 + 1) + +struct analyse_tree_s { + bool is_terminal; + char name[TOK_MAX_LEN]; + unsigned branch_count; + char branch_chars[ANALYSE_MAX_BRANCH]; + struct analyse_tree_s *branches[ANALYSE_MAX_BRANCH]; +}; + +struct analyse_result_s { + struct analyse_tree_s deftype_tree; + struct analyse_tree_s var_tree; +}; + +struct analyse_result_s analyse(struct parse_result_s pr); + +void analyse_result_wipe(struct analyse_result_s *r); + +#endif -- cgit v1.2.3