1 #ifndef Py_PARSER_H 2 #define Py_PARSER_H 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 8 /* Parser interface */ 9 10 #define MAXSTACK 1700 11 12 typedef struct { 13 int s_state; /* State in current DFA */ 14 const dfa *s_dfa; /* Current DFA */ 15 struct _node *s_parent; /* Where to add next node */ 16 } stackentry; 17 18 typedef struct { 19 stackentry *s_top; /* Top entry */ 20 stackentry s_base[MAXSTACK];/* Array of stack entries */ 21 /* NB The stack grows down */ 22 } stack; 23 24 typedef struct { 25 stack p_stack; /* Stack of parser states */ 26 grammar *p_grammar; /* Grammar to use */ 27 node *p_tree; /* Top of parse tree */ 28 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD 29 unsigned long p_flags; /* see co_flags in Include/code.h */ 30 #endif 31 } parser_state; 32 33 parser_state *PyParser_New(grammar *g, int start); 34 void PyParser_Delete(parser_state *ps); 35 int PyParser_AddToken(parser_state *ps, int type, char *str, 36 int lineno, int col_offset, 37 int end_lineno, int end_col_offset, 38 int *expected_ret); 39 void PyGrammar_AddAccelerators(grammar *g); 40 41 42 #define showtree _Py_showtree 43 #define printtree _Py_printtree 44 #define dumptree _Py_dumptree 45 46 #ifdef __cplusplus 47 } 48 #endif 49 #endif /* !Py_PARSER_H */ 50