equal
deleted
inserted
replaced
|
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 */ |