26 #ifndef MICROPY_INCLUDED_PY_PARSE_H 27 #define MICROPY_INCLUDED_PY_PARSE_H 45 #define MP_PARSE_NODE_NULL (0) 46 #define MP_PARSE_NODE_SMALL_INT (0x1) 47 #define MP_PARSE_NODE_ID (0x02) 48 #define MP_PARSE_NODE_STRING (0x06) 49 #define MP_PARSE_NODE_BYTES (0x0a) 50 #define MP_PARSE_NODE_TOKEN (0x0e) 63 #define MP_PARSE_NODE_IS_NULL(pn) ((pn) == MP_PARSE_NODE_NULL) 64 #define MP_PARSE_NODE_IS_LEAF(pn) ((pn) & 3) 65 #define MP_PARSE_NODE_IS_STRUCT(pn) ((pn) != MP_PARSE_NODE_NULL && ((pn) & 3) == 0) 66 #define MP_PARSE_NODE_IS_STRUCT_KIND(pn, k) ((pn) != MP_PARSE_NODE_NULL && ((pn) & 3) == 0 && MP_PARSE_NODE_STRUCT_KIND((mp_parse_node_struct_t*)(pn)) == (k)) 68 #define MP_PARSE_NODE_IS_SMALL_INT(pn) (((pn) & 0x1) == MP_PARSE_NODE_SMALL_INT) 69 #define MP_PARSE_NODE_IS_ID(pn) (((pn) & 0x0f) == MP_PARSE_NODE_ID) 70 #define MP_PARSE_NODE_IS_TOKEN(pn) (((pn) & 0x0f) == MP_PARSE_NODE_TOKEN) 71 #define MP_PARSE_NODE_IS_TOKEN_KIND(pn, k) ((pn) == (MP_PARSE_NODE_TOKEN | ((k) << 4))) 73 #define MP_PARSE_NODE_LEAF_KIND(pn) ((pn) & 0x0f) 74 #define MP_PARSE_NODE_LEAF_ARG(pn) (((uintptr_t)(pn)) >> 4) 75 #define MP_PARSE_NODE_LEAF_SMALL_INT(pn) (((mp_int_t)(intptr_t)(pn)) >> 1) 76 #define MP_PARSE_NODE_STRUCT_KIND(pns) ((pns)->kind_num_nodes & 0xff) 77 #define MP_PARSE_NODE_STRUCT_NUM_NODES(pns) ((pns)->kind_num_nodes >> 8) 99 struct _mp_parse_chunk_t *
chunk;
107 #endif // MICROPY_INCLUDED_PY_PARSE_H bool mp_parse_node_is_const_true(mp_parse_node_t pn)
bool mp_parse_node_is_const_false(mp_parse_node_t pn)
#define MP_PARSE_NODE_SMALL_INT
uintptr_t mp_parse_node_t
bool mp_parse_node_get_int_maybe(mp_parse_node_t pn, mp_obj_t *o)
struct _mp_parse_node_struct_t mp_parse_node_struct_t
void mp_parse_node_print(mp_parse_node_t pn, size_t indent)
int mp_parse_node_extract_list(mp_parse_node_t *pn, size_t pn_kind, mp_parse_node_t **nodes)
struct _mp_parse_chunk_t * chunk
struct _mp_parse_t mp_parse_tree_t
mp_parse_tree_t mp_parse(struct _mp_lexer_t *lex, mp_parse_input_kind_t input_kind)
void mp_parse_tree_clear(mp_parse_tree_t *tree)