PageRenderTime 48ms CodeModel.GetById 40ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/Parser/parser.h

http://unladen-swallow.googlecode.com/
C++ Header | 42 lines | 32 code | 8 blank | 2 comment | 0 complexity | d0e470bc4ce9dbe6117c6b124c677127 MD5 | raw file
 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 */