2006-01-09 12:51:47 +00:00
|
|
|
/*
|
2006-01-11 14:03:17 +00:00
|
|
|
* $Id: tree.h,v 1.4 2006-01-11 14:03:17 bacon Exp $
|
2006-01-09 12:51:47 +00:00
|
|
|
*/
|
2006-01-02 16:38:23 +00:00
|
|
|
|
2006-01-09 12:51:47 +00:00
|
|
|
#ifndef _XP_AWK_TREE_H_
|
|
|
|
#define _XP_AWK_TREE_H_
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_BLOCK,
|
|
|
|
XP_AWK_NODE_BREAK,
|
2006-01-11 14:03:17 +00:00
|
|
|
XP_AWK_NODE_CONTINUE,
|
|
|
|
XP_AWK_NODE_ASSIGN,
|
|
|
|
XP_AWK_NODE_BINARY,
|
|
|
|
XP_AWK_NODE_UNARY,
|
|
|
|
XP_AWK_NODE_STR
|
2006-01-09 12:51:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct xp_awk_node_t xp_awk_node_t;
|
|
|
|
typedef struct xp_awk_node_block_t xp_awk_node_block_t;
|
2006-01-11 14:03:17 +00:00
|
|
|
typedef struct xp_awk_node_assign_t xp_awk_node_assign_t;
|
2006-01-10 13:57:54 +00:00
|
|
|
typedef struct xp_awk_node_expr_t xp_awk_node_expr_t;
|
2006-01-11 14:03:17 +00:00
|
|
|
typedef struct xp_awk_node_str_t xp_awk_node_str_t;
|
2006-01-10 13:57:54 +00:00
|
|
|
typedef struct xp_awk_node_term_t xp_awk_node_term_t;
|
2006-01-09 12:51:47 +00:00
|
|
|
typedef struct xp_awk_node_if_t xp_awk_node_if_t;
|
2006-01-10 13:57:54 +00:00
|
|
|
typedef struct xp_awk_node_while_t xp_awk_node_while_t;
|
|
|
|
typedef struct xp_awk_node_do_t xp_awk_node_do_t;
|
2006-01-09 12:51:47 +00:00
|
|
|
|
|
|
|
#define XP_AWK_NODE_HDR \
|
|
|
|
int type; \
|
2006-01-10 13:57:54 +00:00
|
|
|
xp_awk_node_t* next
|
2006-01-09 12:51:47 +00:00
|
|
|
|
|
|
|
struct xp_awk_node_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
struct xp_awk_node_plain_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
};
|
|
|
|
*/
|
|
|
|
|
|
|
|
struct xp_awk_node_block_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
xp_awk_node_t* body;
|
|
|
|
};
|
|
|
|
|
2006-01-11 14:03:17 +00:00
|
|
|
struct xp_awk_node_assign_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
xp_char_t* left;
|
|
|
|
xp_awk_node_t* right;
|
|
|
|
};
|
|
|
|
|
2006-01-10 13:57:54 +00:00
|
|
|
struct xp_awk_node_expr_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
2006-01-11 14:03:17 +00:00
|
|
|
int opcode;
|
2006-01-10 13:57:54 +00:00
|
|
|
xp_awk_node_t* left;
|
|
|
|
xp_awk_node_t* right;
|
|
|
|
};
|
|
|
|
|
2006-01-11 14:03:17 +00:00
|
|
|
struct xp_awk_node_str_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
xp_char_t* value;
|
|
|
|
};
|
|
|
|
|
2006-01-10 13:57:54 +00:00
|
|
|
struct xp_awk_node_term_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
xp_awk_node_t* value;
|
|
|
|
};
|
|
|
|
|
2006-01-09 12:51:47 +00:00
|
|
|
struct xp_awk_node_if_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
2006-01-10 13:57:54 +00:00
|
|
|
xp_awk_node_t* test;
|
|
|
|
xp_awk_node_t* then_part;
|
2006-01-09 12:51:47 +00:00
|
|
|
xp_awk_node_t* else_part;
|
|
|
|
};
|
|
|
|
|
2006-01-10 13:57:54 +00:00
|
|
|
struct xp_awk_node_while_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
xp_awk_node_t* test;
|
|
|
|
xp_awk_node_t* body;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct xp_awk_node_do_t
|
|
|
|
{
|
|
|
|
XP_AWK_NODE_HDR;
|
|
|
|
xp_awk_node_t* body;
|
|
|
|
xp_awk_node_t* test;
|
|
|
|
};
|
|
|
|
|
2006-01-09 12:51:47 +00:00
|
|
|
#endif
|