Line | |
---|
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 500
|
---|
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 */
|
---|
Note:
See
TracBrowser
for help on using the repository browser.