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 1500 11 12 typedef struct { 13 int s_state; /* State in current DFA */ 14 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, int lineno, int col_offset, 36 int *expected_ret); 37 void PyGrammar_AddAccelerators(grammar *g); 38 39 #ifdef __cplusplus 40 } 41 #endif 42 #endif /* !Py_PARSER_H */ 43