syntax_tree.h 838 Bytes
Newer Older
lyz's avatar
lyz committed
1 2 3 4 5 6 7 8
#ifndef __SYNTAXTREE_H__
#define __SYNTAXTREE_H__

#include <stdio.h>

#define SYNTAX_TREE_NODE_NAME_MAX 30

struct _syntax_tree_node {
lxq's avatar
lxq committed
9 10 11
    struct _syntax_tree_node *parent;
    struct _syntax_tree_node *children[10];
    int children_num;
lyz's avatar
lyz committed
12

lxq's avatar
lxq committed
13
    char name[SYNTAX_TREE_NODE_NAME_MAX];
lyz's avatar
lyz committed
14 15 16
};
typedef struct _syntax_tree_node syntax_tree_node;

lxq's avatar
lxq committed
17 18 19 20
syntax_tree_node *new_anon_syntax_tree_node();
syntax_tree_node *new_syntax_tree_node(const char *name);
int syntax_tree_add_child(syntax_tree_node *parent, syntax_tree_node *child);
void del_syntax_tree_node(syntax_tree_node *node, int recursive);
lyz's avatar
lyz committed
21 22

struct _syntax_tree {
lxq's avatar
lxq committed
23
    syntax_tree_node *root;
lyz's avatar
lyz committed
24 25 26
};
typedef struct _syntax_tree syntax_tree;

lxq's avatar
lxq committed
27 28 29
syntax_tree *new_syntax_tree();
void del_syntax_tree(syntax_tree *tree);
void print_syntax_tree(FILE *fout, syntax_tree *tree);
lyz's avatar
lyz committed
30 31

#endif /* SyntaxTree.h */