1#ifndef Py_PARSER_H 2#define Py_PARSER_H 3#ifdef __cplusplus 4extern "C" { 5#endif 6 7 8/* Parser interface */ 9 10#define MAXSTACK 1500 11 12typedef 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 18typedef 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 24typedef 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 33parser_state *PyParser_New(grammar *g, int start); 34void PyParser_Delete(parser_state *ps); 35int PyParser_AddToken(parser_state *ps, int type, char *str, int lineno, int col_offset, 36 int *expected_ret); 37void PyGrammar_AddAccelerators(grammar *g); 38 39#ifdef __cplusplus 40} 41#endif 42#endif /* !Py_PARSER_H */ 43