aboutsummaryrefslogtreecommitdiff
path: root/src/include/token.h
blob: 6779755d6ed26942280cddc2136b1d2e8b22db24 (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
#ifndef TOKEN_H
#define TOKEN_H

#include "util.h"
#include "hlkt.h"

/* token struct */
typedef struct TOKEN_STRUC {
   /* token type */
   enum TOKEN_TYPE {
      TOKEN_UNKNOWN,
      TOKEN_CHAR_DELIM,
      TOKEN_STR_DELIM,
      TOKEN_COMMENT_DELIM,
      TOKEN_EXPR_END,
      TOKEN_SET,
      TOKEN_LGROUP,
      TOKEN_RGROUP,
      TOKEN_APPLY,
      TOKEN_LIST_DELIM,
      TOKEN_TAG_DELIM,
      TOKEN_NAMESPACE_DELIM,
      TOKEN_LBLOCK,
      TOKEN_RBLOCK,
      TOKEN_RLIST,
      TOKEN_LLIST,
      TOKEN_ESC
   } type;

   /* token value */
   char* val;

   /* next token */
   struct TOKEN_STRUC* nxt;
} token_t;

/* creates a token */
token_t* token_init(int type, char* val);
/* destroys a token **and all tokens contained in nxt** **Make sure to set the nxt of any parent tokens to NULL** */
void token_destroy(token_t* token);

/* return pointer to the last token */
token_t* token_last(token_t* token);

#endif