/* Generated by Cython 0.9.8.1 on Thu Jan  1 23:45:38 2009 */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#include "structmember.h"
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#if PY_VERSION_HEX < 0x02040000
  #define METH_COEXIST 0
#endif
#if PY_VERSION_HEX < 0x02050000
  typedef int Py_ssize_t;
  #define PY_SSIZE_T_MAX INT_MAX
  #define PY_SSIZE_T_MIN INT_MIN
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   PyInt_AsLong(o)
  #define PyNumber_Index(o)    PyNumber_Int(o)
  #define PyIndex_Check(o)     PyNumber_Check(o)
#endif
#if PY_VERSION_HEX < 0x02060000
  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
  #define PyVarObject_HEAD_INIT(type, size) \
          PyObject_HEAD_INIT(type) size,
  #define PyType_Modified(t)

  typedef struct {
       void *buf;
       Py_ssize_t len;
       int readonly;
       const char *format;
       int ndim;
       Py_ssize_t *shape;
       Py_ssize_t *strides;
       Py_ssize_t *suboffsets;
       Py_ssize_t itemsize;
       void *internal;
  } Py_buffer;

  #define PyBUF_SIMPLE 0
  #define PyBUF_WRITABLE 0x0001
  #define PyBUF_LOCK 0x0002
  #define PyBUF_FORMAT 0x0004
  #define PyBUF_ND 0x0008
  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)

#endif
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#endif
#if PY_MAJOR_VERSION >= 3
  #define Py_TPFLAGS_CHECKTYPES 0
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyString_Type                PyBytes_Type
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define PyBytes_Type                 PyString_Type
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
#else
  #define _USE_MATH_DEFINES
#endif
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
#define __PYX_EXTERN_C extern
#endif
#include <math.h>
#define __PYX_HAVE_API__sphinx__pycode__pgen2__parse


#ifdef __GNUC__
#define INLINE __inline__
#elif _WIN32
#define INLINE __inline
#else
#define INLINE 
#endif

typedef struct {PyObject **p; char *s; long n; char is_unicode; char intern; char is_identifier;} __Pyx_StringTabEntry; /*proto*/



static int __pyx_skip_dispatch = 0;


/* Type Conversion Predeclarations */

#if PY_MAJOR_VERSION < 3
#define __Pyx_PyBytes_FromString PyString_FromString
#define __Pyx_PyBytes_AsString   PyString_AsString
#else
#define __Pyx_PyBytes_FromString PyBytes_FromString
#define __Pyx_PyBytes_AsString   PyBytes_AsString
#endif

#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static INLINE int __Pyx_PyObject_IsTrue(PyObject* x);
static INLINE PY_LONG_LONG __pyx_PyInt_AsLongLong(PyObject* x);
static INLINE unsigned PY_LONG_LONG __pyx_PyInt_AsUnsignedLongLong(PyObject* x);
static INLINE Py_ssize_t __pyx_PyIndex_AsSsize_t(PyObject* b);

#define __pyx_PyInt_AsLong(x) (PyInt_CheckExact(x) ? PyInt_AS_LONG(x) : PyInt_AsLong(x))
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))

static INLINE unsigned char __pyx_PyInt_unsigned_char(PyObject* x);
static INLINE unsigned short __pyx_PyInt_unsigned_short(PyObject* x);
static INLINE char __pyx_PyInt_char(PyObject* x);
static INLINE short __pyx_PyInt_short(PyObject* x);
static INLINE int __pyx_PyInt_int(PyObject* x);
static INLINE long __pyx_PyInt_long(PyObject* x);
static INLINE signed char __pyx_PyInt_signed_char(PyObject* x);
static INLINE signed short __pyx_PyInt_signed_short(PyObject* x);
static INLINE signed int __pyx_PyInt_signed_int(PyObject* x);
static INLINE signed long __pyx_PyInt_signed_long(PyObject* x);
static INLINE long double __pyx_PyInt_long_double(PyObject* x);
#ifdef __GNUC__
/* Test for GCC > 2.95 */
#if __GNUC__ > 2 ||               (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) 
#define likely(x)   __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#else /* __GNUC__ > 2 ... */
#define likely(x)   (x)
#define unlikely(x) (x)
#endif /* __GNUC__ > 2 ... */
#else /* __GNUC__ */
#define likely(x)   (x)
#define unlikely(x) (x)
#endif /* __GNUC__ */
    
static PyObject *__pyx_m;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;
static const char **__pyx_f;

static INLINE void __Pyx_RaiseArgtupleTooLong(Py_ssize_t num_expected, Py_ssize_t num_found); /*proto*/

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/

static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/

static INLINE PyObject *__Pyx_GetItemInt(PyObject *o, Py_ssize_t i, int is_unsigned) {
    PyObject *r;
    if (PyList_CheckExact(o) && 0 <= i && i < PyList_GET_SIZE(o)) {
        r = PyList_GET_ITEM(o, i);
        Py_INCREF(r);
    }
    else if (PyTuple_CheckExact(o) && 0 <= i && i < PyTuple_GET_SIZE(o)) {
        r = PyTuple_GET_ITEM(o, i);
        Py_INCREF(r);
    }
    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0) || !is_unsigned))
        r = PySequence_GetItem(o, i);
    else {
        PyObject *j = (likely(i >= 0) || !is_unsigned) ? PyInt_FromLong(i) : PyLong_FromUnsignedLongLong((sizeof(unsigned long long) > sizeof(Py_ssize_t) ? (1ULL << (sizeof(Py_ssize_t)*8)) : 0) + i);
        if (!j)
            return 0;
        r = PyObject_GetItem(o, j);
        Py_DECREF(j);
    }
    return r;
}

static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
static int __Pyx_EndUnpack(PyObject *); /*proto*/

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/

static INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
    if (likely(PyList_CheckExact(L))) {
        if (PyList_Append(L, x) < 0) return NULL;
        Py_INCREF(Py_None);
        return Py_None; // this is just to have an accurate signature
    }
    else {
        return PyObject_CallMethod(L, "append", "(O)", x);
    }
}

static INLINE int __Pyx_SetItemInt(PyObject *o, Py_ssize_t i, PyObject *v, int is_unsigned) {
    int r;
    if (PyList_CheckExact(o) && 0 <= i && i < PyList_GET_SIZE(o)) {
        Py_DECREF(PyList_GET_ITEM(o, i));
        Py_INCREF(v);
        PyList_SET_ITEM(o, i, v);
        return 1;
    }
    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && (likely(i >= 0) || !is_unsigned))
        r = PySequence_SetItem(o, i, v);
    else {
        PyObject *j = (likely(i >= 0) || !is_unsigned) ? PyInt_FromLong(i) : PyLong_FromUnsignedLongLong((sizeof(unsigned long long) > sizeof(Py_ssize_t) ? (1ULL << (sizeof(Py_ssize_t)*8)) : 0) + i);
        if (!j)
            return -1;
        r = PyObject_SetItem(o, j, v);
        Py_DECREF(j);
    }
    return r;
}

static void __Pyx_WriteUnraisable(const char *name); /*proto*/

static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/

static void __Pyx_AddTraceback(const char *funcname); /*proto*/

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/

/* Type declarations */

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":31
 * 
 * 
 * cdef class Parser:             # <<<<<<<<<<<<<<
 *     cdef public grammar, stack, rootnode, used_names
 *     cdef _grammar_dfas, _grammar_labels, _grammar_keywords, _grammar_tokens
 */

struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser {
  PyObject_HEAD
  struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_vtab;
  PyObject *grammar;
  PyObject *stack;
  PyObject *rootnode;
  PyObject *used_names;
  PyObject *_grammar_dfas;
  PyObject *_grammar_labels;
  PyObject *_grammar_keywords;
  PyObject *_grammar_tokens;
  PyObject *_grammar_number2symbol;
};


struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser {
  int (*classify)(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *, PyObject *, PyObject *, PyObject *);
  void (*shift)(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *, PyObject *, PyObject *, PyObject *, PyObject *);
  void (*push)(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *, PyObject *, PyObject *, PyObject *, PyObject *);
  void (*pop)(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *);
  PyObject *(*convert)(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *, PyObject *);
};
static struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_vtabptr_6sphinx_6pycode_5pgen2_5parse_Parser;
/* Module declarations from sphinx.pycode.pgen2.parse */

static PyTypeObject *__pyx_ptype_6sphinx_6pycode_5pgen2_5parse_Parser = 0;


/* Implementation of sphinx.pycode.pgen2.parse */
static char __pyx_k_2[] = "Exception to signal the parser is stuck.";
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static char __pyx_k___init__[] = "__init__";
static PyObject *__pyx_kp___init__;
static char __pyx_k_setup[] = "setup";
static PyObject *__pyx_kp_setup;
static char __pyx_k_addtoken[] = "addtoken";
static PyObject *__pyx_kp_addtoken;
static char __pyx_k_1[] = "sphinx.pycode.nodes";
static PyObject *__pyx_kp_1;
static char __pyx_k_Node[] = "Node";
static PyObject *__pyx_kp_Node;
static char __pyx_k_Leaf[] = "Leaf";
static PyObject *__pyx_kp_Leaf;
static char __pyx_k_ParseError[] = "ParseError";
static PyObject *__pyx_kp_ParseError;
static char __pyx_k_Exception[] = "Exception";
static PyObject *__pyx_kp_Exception;
static char __pyx_k_msg[] = "msg";
static PyObject *__pyx_kp_msg;
static char __pyx_k_type[] = "type";
static PyObject *__pyx_kp_type;
static char __pyx_k_value[] = "value";
static PyObject *__pyx_kp_value;
static char __pyx_k_context[] = "context";
static PyObject *__pyx_kp_context;
static char __pyx_k_dfas[] = "dfas";
static PyObject *__pyx_kp_dfas;
static char __pyx_k_labels[] = "labels";
static PyObject *__pyx_kp_labels;
static char __pyx_k_keywords[] = "keywords";
static PyObject *__pyx_kp_keywords;
static char __pyx_k_tokens[] = "tokens";
static PyObject *__pyx_kp_tokens;
static char __pyx_k_4[] = "number2symbol";
static PyObject *__pyx_kp_4;
static char __pyx_k_start[] = "start";
static PyObject *__pyx_kp_start;
static char __pyx_k_add[] = "add";
static PyObject *__pyx_kp_add;
static char __pyx_k_get[] = "get";
static PyObject *__pyx_kp_get;
static char __pyx_k_append[] = "append";
static PyObject *__pyx_kp_append;
static char __pyx_k_pop[] = "pop";
static PyObject *__pyx_kp_pop;
static char __pyx_k_used_names[] = "used_names";
static PyObject *__pyx_kp_used_names;
static PyObject *__pyx_kp_2;
static PyObject *__pyx_builtin_Exception;
static PyObject *__pyx_kp_3;
static char __pyx_k_3[] = "%s: type=%r, value=%r, context=%r";
static PyObject *__pyx_kp_5;
static PyObject *__pyx_kp_6;
static char __pyx_k_5[] = "too much input";
static char __pyx_k_6[] = "bad input";
static PyObject *__pyx_kp_7;
static char __pyx_k_7[] = "bad token";

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":22
 *     """Exception to signal the parser is stuck."""
 * 
 *     def __init__(self, msg, type, value, context):             # <<<<<<<<<<<<<<
 *         Exception.__init__(self, "%s: type=%r, value=%r, context=%r" %
 *                            (msg, type, value, context))
 */

static PyObject *__pyx_pf_6sphinx_6pycode_5pgen2_5parse_10ParseError___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6sphinx_6pycode_5pgen2_5parse_10ParseError___init__ = {"__init__", (PyCFunction)__pyx_pf_6sphinx_6pycode_5pgen2_5parse_10ParseError___init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pf_6sphinx_6pycode_5pgen2_5parse_10ParseError___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_v_type = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_v_context = 0;
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  static char *__pyx_argnames[] = {"self","msg","type","value","context",0};
  __pyx_self = __pyx_self;
  if (likely(!__pyx_kwds) && likely(PyTuple_GET_SIZE(__pyx_args) == 5)) {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_msg = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_type = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 3);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 4);
  }
  else {
    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOOOO", __pyx_argnames, &__pyx_v_self, &__pyx_v_msg, &__pyx_v_type, &__pyx_v_value, &__pyx_v_context))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4;
  __pyx_L3_error:;
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.ParseError.__init__");
  return NULL;
  __pyx_L4:;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":23
 * 
 *     def __init__(self, msg, type, value, context):
 *         Exception.__init__(self, "%s: type=%r, value=%r, context=%r" %             # <<<<<<<<<<<<<<
 *                            (msg, type, value, context))
 *         self.msg = msg
 */
  __pyx_1 = PyObject_GetAttr(__pyx_builtin_Exception, __pyx_kp___init__); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":24
 *     def __init__(self, msg, type, value, context):
 *         Exception.__init__(self, "%s: type=%r, value=%r, context=%r" %
 *                            (msg, type, value, context))             # <<<<<<<<<<<<<<
 *         self.msg = msg
 *         self.type = type
 */
  __pyx_2 = PyTuple_New(4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_msg);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_msg);
  Py_INCREF(__pyx_v_type);
  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_v_type);
  Py_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_2, 2, __pyx_v_value);
  Py_INCREF(__pyx_v_context);
  PyTuple_SET_ITEM(__pyx_2, 3, __pyx_v_context);
  __pyx_3 = PyNumber_Remainder(__pyx_kp_3, ((PyObject *)__pyx_2)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
  __pyx_2 = PyTuple_New(2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_self);
  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_3);
  __pyx_3 = 0;
  __pyx_3 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
  Py_DECREF(__pyx_3); __pyx_3 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":25
 *         Exception.__init__(self, "%s: type=%r, value=%r, context=%r" %
 *                            (msg, type, value, context))
 *         self.msg = msg             # <<<<<<<<<<<<<<
 *         self.type = type
 *         self.value = value
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_kp_msg, __pyx_v_msg) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":26
 *                            (msg, type, value, context))
 *         self.msg = msg
 *         self.type = type             # <<<<<<<<<<<<<<
 *         self.value = value
 *         self.context = context
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_kp_type, __pyx_v_type) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":27
 *         self.msg = msg
 *         self.type = type
 *         self.value = value             # <<<<<<<<<<<<<<
 *         self.context = context
 * 
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_kp_value, __pyx_v_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":28
 *         self.type = type
 *         self.value = value
 *         self.context = context             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_kp_context, __pyx_v_context) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.ParseError.__init__");
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":36
 *     cdef _grammar_number2symbol
 * 
 *     def __init__(self, grammar, convert=None):             # <<<<<<<<<<<<<<
 *         self.grammar = grammar
 *         #self.convert = convert or noconvert
 */

static int __pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_grammar = 0;
  PyObject *__pyx_v_convert = 0;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  static char *__pyx_argnames[] = {"grammar","convert",0};
  __pyx_v_convert = Py_None;
  if (likely(!__pyx_kwds) && likely(1 <= PyTuple_GET_SIZE(__pyx_args)) && likely(PyTuple_GET_SIZE(__pyx_args) <= 2)) {
    __pyx_v_grammar = PyTuple_GET_ITEM(__pyx_args, 0);
    if (PyTuple_GET_SIZE(__pyx_args) > 1) {
      __pyx_v_convert = PyTuple_GET_ITEM(__pyx_args, 1);
    }
  }
  else {
    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_grammar, &__pyx_v_convert))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4;
  __pyx_L3_error:;
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.__init__");
  return -1;
  __pyx_L4:;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":37
 * 
 *     def __init__(self, grammar, convert=None):
 *         self.grammar = grammar             # <<<<<<<<<<<<<<
 *         #self.convert = convert or noconvert
 * 
 */
  Py_INCREF(__pyx_v_grammar);
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->grammar);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->grammar = __pyx_v_grammar;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":40
 *         #self.convert = convert or noconvert
 * 
 *         self._grammar_dfas = grammar.dfas             # <<<<<<<<<<<<<<
 *         self._grammar_labels = grammar.labels
 *         self._grammar_keywords = grammar.keywords
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_grammar, __pyx_kp_dfas); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_dfas);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_dfas = __pyx_1;
  __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":41
 * 
 *         self._grammar_dfas = grammar.dfas
 *         self._grammar_labels = grammar.labels             # <<<<<<<<<<<<<<
 *         self._grammar_keywords = grammar.keywords
 *         self._grammar_tokens = grammar.tokens
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_grammar, __pyx_kp_labels); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_labels);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_labels = __pyx_1;
  __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":42
 *         self._grammar_dfas = grammar.dfas
 *         self._grammar_labels = grammar.labels
 *         self._grammar_keywords = grammar.keywords             # <<<<<<<<<<<<<<
 *         self._grammar_tokens = grammar.tokens
 *         self._grammar_number2symbol = grammar.number2symbol
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_grammar, __pyx_kp_keywords); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_keywords);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_keywords = __pyx_1;
  __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":43
 *         self._grammar_labels = grammar.labels
 *         self._grammar_keywords = grammar.keywords
 *         self._grammar_tokens = grammar.tokens             # <<<<<<<<<<<<<<
 *         self._grammar_number2symbol = grammar.number2symbol
 * 
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_grammar, __pyx_kp_tokens); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_tokens);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_tokens = __pyx_1;
  __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":44
 *         self._grammar_keywords = grammar.keywords
 *         self._grammar_tokens = grammar.tokens
 *         self._grammar_number2symbol = grammar.number2symbol             # <<<<<<<<<<<<<<
 * 
 *     def setup(self, start=None):
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_grammar, __pyx_kp_4); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_number2symbol);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_number2symbol = __pyx_1;
  __pyx_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":46
 *         self._grammar_number2symbol = grammar.number2symbol
 * 
 *     def setup(self, start=None):             # <<<<<<<<<<<<<<
 *         if start is None:
 *             start = self.grammar.start
 */

static PyObject *__pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser_setup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser_setup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_start = 0;
  PyObject *__pyx_v_newnode;
  PyObject *__pyx_v_stackentry;
  PyObject *__pyx_r;
  int __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  static char *__pyx_argnames[] = {"start",0};
  __pyx_v_start = Py_None;
  if (likely(!__pyx_kwds) && likely(0 <= PyTuple_GET_SIZE(__pyx_args)) && likely(PyTuple_GET_SIZE(__pyx_args) <= 1)) {
    if (PyTuple_GET_SIZE(__pyx_args) > 0) {
      __pyx_v_start = PyTuple_GET_ITEM(__pyx_args, 0);
    }
  }
  else {
    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_start))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4;
  __pyx_L3_error:;
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.setup");
  return NULL;
  __pyx_L4:;
  Py_INCREF(__pyx_v_start);
  __pyx_v_newnode = Py_None; Py_INCREF(Py_None);
  __pyx_v_stackentry = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":47
 * 
 *     def setup(self, start=None):
 *         if start is None:             # <<<<<<<<<<<<<<
 *             start = self.grammar.start
 *         # Each stack entry is a tuple: (dfa, state, node).
 */
  __pyx_1 = (__pyx_v_start == Py_None);
  if (__pyx_1) {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":48
 *     def setup(self, start=None):
 *         if start is None:
 *             start = self.grammar.start             # <<<<<<<<<<<<<<
 *         # Each stack entry is a tuple: (dfa, state, node).
 *         # A node is a tuple: (type, value, context, children),
 */
    __pyx_2 = PyObject_GetAttr(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->grammar, __pyx_kp_start); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_start);
    __pyx_v_start = __pyx_2;
    __pyx_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":52
 *         # A node is a tuple: (type, value, context, children),
 *         # where children is a list of nodes or None, and context may be None.
 *         newnode = (start, None, None, [])             # <<<<<<<<<<<<<<
 *         stackentry = (self._grammar_dfas[start], 0, newnode)
 *         self.stack = [stackentry]
 */
  __pyx_2 = PyList_New(0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_3 = PyTuple_New(4); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_start);
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_start);
  Py_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_3, 1, Py_None);
  Py_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_3, 2, Py_None);
  PyTuple_SET_ITEM(__pyx_3, 3, ((PyObject *)__pyx_2));
  __pyx_2 = 0;
  Py_DECREF(__pyx_v_newnode);
  __pyx_v_newnode = ((PyObject *)__pyx_3);
  __pyx_3 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":53
 *         # where children is a list of nodes or None, and context may be None.
 *         newnode = (start, None, None, [])
 *         stackentry = (self._grammar_dfas[start], 0, newnode)             # <<<<<<<<<<<<<<
 *         self.stack = [stackentry]
 *         self.rootnode = None
 */
  __pyx_2 = PyObject_GetItem(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_dfas, __pyx_v_start); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_3 = PyTuple_New(3); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
  Py_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_int_0);
  Py_INCREF(__pyx_v_newnode);
  PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_newnode);
  __pyx_2 = 0;
  Py_DECREF(__pyx_v_stackentry);
  __pyx_v_stackentry = ((PyObject *)__pyx_3);
  __pyx_3 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":54
 *         newnode = (start, None, None, [])
 *         stackentry = (self._grammar_dfas[start], 0, newnode)
 *         self.stack = [stackentry]             # <<<<<<<<<<<<<<
 *         self.rootnode = None
 *         self.used_names = set() # Aliased to self.rootnode.used_names in pop()
 */
  __pyx_2 = PyList_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_stackentry);
  PyList_SET_ITEM(__pyx_2, 0, __pyx_v_stackentry);
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->stack);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->stack = ((PyObject *)__pyx_2);
  __pyx_2 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":55
 *         stackentry = (self._grammar_dfas[start], 0, newnode)
 *         self.stack = [stackentry]
 *         self.rootnode = None             # <<<<<<<<<<<<<<
 *         self.used_names = set() # Aliased to self.rootnode.used_names in pop()
 * 
 */
  Py_INCREF(Py_None);
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->rootnode);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->rootnode = Py_None;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":56
 *         self.stack = [stackentry]
 *         self.rootnode = None
 *         self.used_names = set() # Aliased to self.rootnode.used_names in pop()             # <<<<<<<<<<<<<<
 * 
 *     def addtoken(self, type, value, context):
 */
  __pyx_3 = PyObject_Call(((PyObject*)&PySet_Type), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->used_names);
  ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->used_names = __pyx_3;
  __pyx_3 = 0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.setup");
  __pyx_r = NULL;
  __pyx_L0:;
  Py_DECREF(__pyx_v_newnode);
  Py_DECREF(__pyx_v_stackentry);
  Py_DECREF(__pyx_v_start);
  return __pyx_r;
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":58
 *         self.used_names = set() # Aliased to self.rootnode.used_names in pop()
 * 
 *     def addtoken(self, type, value, context):             # <<<<<<<<<<<<<<
 *         """Add a token; return True iff this is the end of the program."""
 *         cdef int ilabel, i, t, state, newstate
 */

static PyObject *__pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser_addtoken(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6sphinx_6pycode_5pgen2_5parse_6Parser_addtoken[] = "Add a token; return True iff this is the end of the program.";
static PyObject *__pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser_addtoken(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_type = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_v_context = 0;
  int __pyx_v_ilabel;
  int __pyx_v_i;
  int __pyx_v_t;
  int __pyx_v_state;
  int __pyx_v_newstate;
  PyObject *__pyx_v_dfa;
  PyObject *__pyx_v_node;
  PyObject *__pyx_v_states;
  PyObject *__pyx_v_first;
  PyObject *__pyx_v_arcs;
  PyObject *__pyx_v_v;
  PyObject *__pyx_v_itsdfa;
  PyObject *__pyx_v_itsstates;
  PyObject *__pyx_v_itsfirst;
  PyObject *__pyx_r;
  int __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  int __pyx_5;
  Py_ssize_t __pyx_6 = 0;
  PyObject *__pyx_7 = 0;
  int __pyx_8;
  static char *__pyx_argnames[] = {"type","value","context",0};
  if (likely(!__pyx_kwds) && likely(PyTuple_GET_SIZE(__pyx_args) == 3)) {
    __pyx_v_type = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 2);
  }
  else {
    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO", __pyx_argnames, &__pyx_v_type, &__pyx_v_value, &__pyx_v_context))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4;
  __pyx_L3_error:;
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.addtoken");
  return NULL;
  __pyx_L4:;
  __pyx_v_dfa = Py_None; Py_INCREF(Py_None);
  __pyx_v_node = Py_None; Py_INCREF(Py_None);
  __pyx_v_states = Py_None; Py_INCREF(Py_None);
  __pyx_v_first = Py_None; Py_INCREF(Py_None);
  __pyx_v_arcs = Py_None; Py_INCREF(Py_None);
  __pyx_v_v = Py_None; Py_INCREF(Py_None);
  __pyx_v_itsdfa = Py_None; Py_INCREF(Py_None);
  __pyx_v_itsstates = Py_None; Py_INCREF(Py_None);
  __pyx_v_itsfirst = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":62
 *         cdef int ilabel, i, t, state, newstate
 *         # Map from token to label
 *         ilabel = self.classify(type, value, context)             # <<<<<<<<<<<<<<
 *         # Loop until the token is shifted; may raise exceptions
 *         while True:
 */
  __pyx_v_ilabel = ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->__pyx_vtab)->classify(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self), __pyx_v_type, __pyx_v_value, __pyx_v_context);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":64
 *         ilabel = self.classify(type, value, context)
 *         # Loop until the token is shifted; may raise exceptions
 *         while True:             # <<<<<<<<<<<<<<
 *             dfa, state, node = self.stack[-1]
 *             states, first = dfa
 */
  while (1) {
    __pyx_1 = 1;
    if (!__pyx_1) break;

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":65
 *         # Loop until the token is shifted; may raise exceptions
 *         while True:
 *             dfa, state, node = self.stack[-1]             # <<<<<<<<<<<<<<
 *             states, first = dfa
 *             arcs = states[state]
 */
    __pyx_2 = __Pyx_GetItemInt(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->stack, -1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyTuple_CheckExact(__pyx_2) && PyTuple_GET_SIZE(__pyx_2) == 3) {
      PyObject* tuple = __pyx_2;
      __pyx_4 = PyTuple_GET_ITEM(tuple, 0);
      Py_INCREF(__pyx_4);
      Py_DECREF(__pyx_v_dfa);
      __pyx_v_dfa = __pyx_4;
      __pyx_4 = 0;
      __pyx_4 = PyTuple_GET_ITEM(tuple, 1);
      Py_INCREF(__pyx_4);
      __pyx_5 = __pyx_PyInt_int(__pyx_4); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_4); __pyx_4 = 0;
      __pyx_v_state = __pyx_5;
      __pyx_4 = PyTuple_GET_ITEM(tuple, 2);
      Py_INCREF(__pyx_4);
      Py_DECREF(__pyx_v_node);
      __pyx_v_node = __pyx_4;
      __pyx_4 = 0;
      Py_DECREF(__pyx_2); __pyx_2 = 0;
    }
    else {
      __pyx_3 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_2); __pyx_2 = 0;
      __pyx_4 = __Pyx_UnpackItem(__pyx_3, 0); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_v_dfa);
      __pyx_v_dfa = __pyx_4;
      __pyx_4 = 0;
      __pyx_4 = __Pyx_UnpackItem(__pyx_3, 1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_5 = __pyx_PyInt_int(__pyx_4); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_4); __pyx_4 = 0;
      __pyx_v_state = __pyx_5;
      __pyx_4 = __Pyx_UnpackItem(__pyx_3, 2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_v_node);
      __pyx_v_node = __pyx_4;
      __pyx_4 = 0;
      if (__Pyx_EndUnpack(__pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_3); __pyx_3 = 0;
    }

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":66
 *         while True:
 *             dfa, state, node = self.stack[-1]
 *             states, first = dfa             # <<<<<<<<<<<<<<
 *             arcs = states[state]
 *             # Look for a state with this label
 */
    if (PyTuple_CheckExact(__pyx_v_dfa) && PyTuple_GET_SIZE(__pyx_v_dfa) == 2) {
      PyObject* tuple = __pyx_v_dfa;
      __pyx_2 = PyTuple_GET_ITEM(tuple, 0);
      Py_INCREF(__pyx_2);
      Py_DECREF(__pyx_v_states);
      __pyx_v_states = __pyx_2;
      __pyx_2 = 0;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 1);
      Py_INCREF(__pyx_3);
      Py_DECREF(__pyx_v_first);
      __pyx_v_first = __pyx_3;
      __pyx_3 = 0;
    }
    else {
      __pyx_4 = PyObject_GetIter(__pyx_v_dfa); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_2 = __Pyx_UnpackItem(__pyx_4, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_v_states);
      __pyx_v_states = __pyx_2;
      __pyx_2 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_4, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_v_first);
      __pyx_v_first = __pyx_3;
      __pyx_3 = 0;
      if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_4); __pyx_4 = 0;
    }

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":67
 *             dfa, state, node = self.stack[-1]
 *             states, first = dfa
 *             arcs = states[state]             # <<<<<<<<<<<<<<
 *             # Look for a state with this label
 *             for i, newstate in arcs:
 */
    __pyx_2 = __Pyx_GetItemInt(__pyx_v_states, __pyx_v_state, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_arcs);
    __pyx_v_arcs = __pyx_2;
    __pyx_2 = 0;

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":69
 *             arcs = states[state]
 *             # Look for a state with this label
 *             for i, newstate in arcs:             # <<<<<<<<<<<<<<
 *                 t, v = self._grammar_labels[i]
 *                 if ilabel == i:
 */
    if (PyList_CheckExact(__pyx_v_arcs) || PyTuple_CheckExact(__pyx_v_arcs)) {
      __pyx_6 = 0; __pyx_3 = __pyx_v_arcs; Py_INCREF(__pyx_3);
    } else {
      __pyx_6 = -1; __pyx_3 = PyObject_GetIter(__pyx_v_arcs); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_3))) {
        if (__pyx_6 >= PyList_GET_SIZE(__pyx_3)) break;
        __pyx_4 = PyList_GET_ITEM(__pyx_3, __pyx_6); Py_INCREF(__pyx_4); __pyx_6++;
      } else if (likely(PyTuple_CheckExact(__pyx_3))) {
        if (__pyx_6 >= PyTuple_GET_SIZE(__pyx_3)) break;
        __pyx_4 = PyTuple_GET_ITEM(__pyx_3, __pyx_6); Py_INCREF(__pyx_4); __pyx_6++;
      } else {
        __pyx_4 = PyIter_Next(__pyx_3);
        if (!__pyx_4) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
      }
      if (PyTuple_CheckExact(__pyx_4) && PyTuple_GET_SIZE(__pyx_4) == 2) {
        PyObject* tuple = __pyx_4;
        __pyx_7 = PyTuple_GET_ITEM(tuple, 0);
        Py_INCREF(__pyx_7);
        __pyx_5 = __pyx_PyInt_int(__pyx_7); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_7); __pyx_7 = 0;
        __pyx_v_i = __pyx_5;
        __pyx_7 = PyTuple_GET_ITEM(tuple, 1);
        Py_INCREF(__pyx_7);
        __pyx_5 = __pyx_PyInt_int(__pyx_7); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_7); __pyx_7 = 0;
        __pyx_v_newstate = __pyx_5;
        Py_DECREF(__pyx_4); __pyx_4 = 0;
      }
      else {
        __pyx_2 = PyObject_GetIter(__pyx_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_4); __pyx_4 = 0;
        __pyx_7 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_5 = __pyx_PyInt_int(__pyx_7); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_7); __pyx_7 = 0;
        __pyx_v_i = __pyx_5;
        __pyx_7 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_5 = __pyx_PyInt_int(__pyx_7); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_7); __pyx_7 = 0;
        __pyx_v_newstate = __pyx_5;
        if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_2); __pyx_2 = 0;
      }

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":70
 *             # Look for a state with this label
 *             for i, newstate in arcs:
 *                 t, v = self._grammar_labels[i]             # <<<<<<<<<<<<<<
 *                 if ilabel == i:
 *                     # Look it up in the list of labels
 */
      __pyx_7 = __Pyx_GetItemInt(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_labels, __pyx_v_i, 0); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (PyTuple_CheckExact(__pyx_7) && PyTuple_GET_SIZE(__pyx_7) == 2) {
        PyObject* tuple = __pyx_7;
        __pyx_2 = PyTuple_GET_ITEM(tuple, 0);
        Py_INCREF(__pyx_2);
        __pyx_5 = __pyx_PyInt_int(__pyx_2); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_2); __pyx_2 = 0;
        __pyx_v_t = __pyx_5;
        __pyx_2 = PyTuple_GET_ITEM(tuple, 1);
        Py_INCREF(__pyx_2);
        Py_DECREF(__pyx_v_v);
        __pyx_v_v = __pyx_2;
        __pyx_2 = 0;
        Py_DECREF(__pyx_7); __pyx_7 = 0;
      }
      else {
        __pyx_4 = PyObject_GetIter(__pyx_7); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_7); __pyx_7 = 0;
        __pyx_2 = __Pyx_UnpackItem(__pyx_4, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_5 = __pyx_PyInt_int(__pyx_2); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_2); __pyx_2 = 0;
        __pyx_v_t = __pyx_5;
        __pyx_2 = __Pyx_UnpackItem(__pyx_4, 1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_v_v);
        __pyx_v_v = __pyx_2;
        __pyx_2 = 0;
        if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_4); __pyx_4 = 0;
      }

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":71
 *             for i, newstate in arcs:
 *                 t, v = self._grammar_labels[i]
 *                 if ilabel == i:             # <<<<<<<<<<<<<<
 *                     # Look it up in the list of labels
 *                     ## assert t < 256
 */
      __pyx_1 = (__pyx_v_ilabel == __pyx_v_i);
      if (__pyx_1) {

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":75
 *                     ## assert t < 256
 *                     # Shift a token; we're done with it
 *                     self.shift(type, value, newstate, context)             # <<<<<<<<<<<<<<
 *                     # Pop while we are in an accept-only state
 *                     state = newstate
 */
        __pyx_2 = PyInt_FromLong(__pyx_v_newstate); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->__pyx_vtab)->shift(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self), __pyx_v_type, __pyx_v_value, __pyx_2, __pyx_v_context);
        Py_DECREF(__pyx_2); __pyx_2 = 0;

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":77
 *                     self.shift(type, value, newstate, context)
 *                     # Pop while we are in an accept-only state
 *                     state = newstate             # <<<<<<<<<<<<<<
 *                     while states[state] == [(0, state)]:
 *                         self.pop()
 */
        __pyx_v_state = __pyx_v_newstate;

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":78
 *                     # Pop while we are in an accept-only state
 *                     state = newstate
 *                     while states[state] == [(0, state)]:             # <<<<<<<<<<<<<<
 *                         self.pop()
 *                         if not self.stack:
 */
        while (1) {
          __pyx_7 = __Pyx_GetItemInt(__pyx_v_states, __pyx_v_state, 0); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_4 = PyInt_FromLong(__pyx_v_state); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_2 = PyTuple_New(2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_INCREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_2, 0, __pyx_int_0);
          PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
          __pyx_4 = 0;
          __pyx_4 = PyList_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          PyList_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_2));
          __pyx_2 = 0;
          __pyx_2 = PyObject_RichCompare(__pyx_7, ((PyObject *)__pyx_4), Py_EQ); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_DECREF(__pyx_7); __pyx_7 = 0;
          Py_DECREF(((PyObject *)__pyx_4)); __pyx_4 = 0;
          __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_DECREF(__pyx_2); __pyx_2 = 0;
          if (!__pyx_1) break;

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":79
 *                     state = newstate
 *                     while states[state] == [(0, state)]:
 *                         self.pop()             # <<<<<<<<<<<<<<
 *                         if not self.stack:
 *                             # Done parsing!
 */
          ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->__pyx_vtab)->pop(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self));

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":80
 *                     while states[state] == [(0, state)]:
 *                         self.pop()
 *                         if not self.stack:             # <<<<<<<<<<<<<<
 *                             # Done parsing!
 *                             return True
 */
          __pyx_1 = __Pyx_PyObject_IsTrue(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->stack); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_8 = (!__pyx_1);
          if (__pyx_8) {

            /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":82
 *                         if not self.stack:
 *                             # Done parsing!
 *                             return True             # <<<<<<<<<<<<<<
 *                         dfa, state, node = self.stack[-1]
 *                         states, first = dfa
 */
            __pyx_7 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __pyx_r = __pyx_7;
            __pyx_7 = 0;
            Py_DECREF(__pyx_3); __pyx_3 = 0;
            goto __pyx_L0;
            goto __pyx_L12;
          }
          __pyx_L12:;

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":83
 *                             # Done parsing!
 *                             return True
 *                         dfa, state, node = self.stack[-1]             # <<<<<<<<<<<<<<
 *                         states, first = dfa
 *                     # Done with this token
 */
          __pyx_4 = __Pyx_GetItemInt(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->stack, -1, 0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          if (PyTuple_CheckExact(__pyx_4) && PyTuple_GET_SIZE(__pyx_4) == 3) {
            PyObject* tuple = __pyx_4;
            __pyx_7 = PyTuple_GET_ITEM(tuple, 0);
            Py_INCREF(__pyx_7);
            Py_DECREF(__pyx_v_dfa);
            __pyx_v_dfa = __pyx_7;
            __pyx_7 = 0;
            __pyx_7 = PyTuple_GET_ITEM(tuple, 1);
            Py_INCREF(__pyx_7);
            __pyx_5 = __pyx_PyInt_int(__pyx_7); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_7); __pyx_7 = 0;
            __pyx_v_state = __pyx_5;
            __pyx_7 = PyTuple_GET_ITEM(tuple, 2);
            Py_INCREF(__pyx_7);
            Py_DECREF(__pyx_v_node);
            __pyx_v_node = __pyx_7;
            __pyx_7 = 0;
            Py_DECREF(__pyx_4); __pyx_4 = 0;
          }
          else {
            __pyx_2 = PyObject_GetIter(__pyx_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_4); __pyx_4 = 0;
            __pyx_7 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_v_dfa);
            __pyx_v_dfa = __pyx_7;
            __pyx_7 = 0;
            __pyx_7 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __pyx_5 = __pyx_PyInt_int(__pyx_7); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_7); __pyx_7 = 0;
            __pyx_v_state = __pyx_5;
            __pyx_7 = __Pyx_UnpackItem(__pyx_2, 2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_v_node);
            __pyx_v_node = __pyx_7;
            __pyx_7 = 0;
            if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_2); __pyx_2 = 0;
          }

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":84
 *                             return True
 *                         dfa, state, node = self.stack[-1]
 *                         states, first = dfa             # <<<<<<<<<<<<<<
 *                     # Done with this token
 *                     return False
 */
          if (PyTuple_CheckExact(__pyx_v_dfa) && PyTuple_GET_SIZE(__pyx_v_dfa) == 2) {
            PyObject* tuple = __pyx_v_dfa;
            __pyx_4 = PyTuple_GET_ITEM(tuple, 0);
            Py_INCREF(__pyx_4);
            Py_DECREF(__pyx_v_states);
            __pyx_v_states = __pyx_4;
            __pyx_4 = 0;
            __pyx_2 = PyTuple_GET_ITEM(tuple, 1);
            Py_INCREF(__pyx_2);
            Py_DECREF(__pyx_v_first);
            __pyx_v_first = __pyx_2;
            __pyx_2 = 0;
          }
          else {
            __pyx_7 = PyObject_GetIter(__pyx_v_dfa); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __pyx_4 = __Pyx_UnpackItem(__pyx_7, 0); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_v_states);
            __pyx_v_states = __pyx_4;
            __pyx_4 = 0;
            __pyx_2 = __Pyx_UnpackItem(__pyx_7, 1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_v_first);
            __pyx_v_first = __pyx_2;
            __pyx_2 = 0;
            if (__Pyx_EndUnpack(__pyx_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            Py_DECREF(__pyx_7); __pyx_7 = 0;
          }
        }

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":86
 *                         states, first = dfa
 *                     # Done with this token
 *                     return False             # <<<<<<<<<<<<<<
 *                 elif t >= 256:
 *                     # See if it's a symbol and if we're in its first set
 */
        __pyx_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_r = __pyx_4;
        __pyx_4 = 0;
        Py_DECREF(__pyx_3); __pyx_3 = 0;
        goto __pyx_L0;
        goto __pyx_L9;
      }

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":87
 *                     # Done with this token
 *                     return False
 *                 elif t >= 256:             # <<<<<<<<<<<<<<
 *                     # See if it's a symbol and if we're in its first set
 *                     itsdfa = self._grammar_dfas[t]
 */
      __pyx_1 = (__pyx_v_t >= 256);
      if (__pyx_1) {

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":89
 *                 elif t >= 256:
 *                     # See if it's a symbol and if we're in its first set
 *                     itsdfa = self._grammar_dfas[t]             # <<<<<<<<<<<<<<
 *                     itsstates, itsfirst = itsdfa
 *                     if ilabel in itsfirst:
 */
        __pyx_2 = __Pyx_GetItemInt(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->_grammar_dfas, __pyx_v_t, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_v_itsdfa);
        __pyx_v_itsdfa = __pyx_2;
        __pyx_2 = 0;

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":90
 *                     # See if it's a symbol and if we're in its first set
 *                     itsdfa = self._grammar_dfas[t]
 *                     itsstates, itsfirst = itsdfa             # <<<<<<<<<<<<<<
 *                     if ilabel in itsfirst:
 *                         # Push a symbol
 */
        if (PyTuple_CheckExact(__pyx_v_itsdfa) && PyTuple_GET_SIZE(__pyx_v_itsdfa) == 2) {
          PyObject* tuple = __pyx_v_itsdfa;
          __pyx_4 = PyTuple_GET_ITEM(tuple, 0);
          Py_INCREF(__pyx_4);
          Py_DECREF(__pyx_v_itsstates);
          __pyx_v_itsstates = __pyx_4;
          __pyx_4 = 0;
          __pyx_2 = PyTuple_GET_ITEM(tuple, 1);
          Py_INCREF(__pyx_2);
          Py_DECREF(__pyx_v_itsfirst);
          __pyx_v_itsfirst = __pyx_2;
          __pyx_2 = 0;
        }
        else {
          __pyx_7 = PyObject_GetIter(__pyx_v_itsdfa); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_4 = __Pyx_UnpackItem(__pyx_7, 0); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_DECREF(__pyx_v_itsstates);
          __pyx_v_itsstates = __pyx_4;
          __pyx_4 = 0;
          __pyx_2 = __Pyx_UnpackItem(__pyx_7, 1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_DECREF(__pyx_v_itsfirst);
          __pyx_v_itsfirst = __pyx_2;
          __pyx_2 = 0;
          if (__Pyx_EndUnpack(__pyx_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_DECREF(__pyx_7); __pyx_7 = 0;
        }

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":91
 *                     itsdfa = self._grammar_dfas[t]
 *                     itsstates, itsfirst = itsdfa
 *                     if ilabel in itsfirst:             # <<<<<<<<<<<<<<
 *                         # Push a symbol
 *                         self.push(t, itsdfa, newstate, context)
 */
        __pyx_4 = PyInt_FromLong(__pyx_v_ilabel); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_8 = (PySequence_Contains(__pyx_v_itsfirst, __pyx_4)); if (unlikely(__pyx_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_4); __pyx_4 = 0;
        if (__pyx_8) {

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":93
 *                     if ilabel in itsfirst:
 *                         # Push a symbol
 *                         self.push(t, itsdfa, newstate, context)             # <<<<<<<<<<<<<<
 *                         break # To continue the outer while loop
 *             else:
 */
          __pyx_2 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_7 = PyInt_FromLong(__pyx_v_newstate); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->__pyx_vtab)->push(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self), __pyx_2, __pyx_v_itsdfa, __pyx_7, __pyx_v_context);
          Py_DECREF(__pyx_2); __pyx_2 = 0;
          Py_DECREF(__pyx_7); __pyx_7 = 0;

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":94
 *                         # Push a symbol
 *                         self.push(t, itsdfa, newstate, context)
 *                         break # To continue the outer while loop             # <<<<<<<<<<<<<<
 *             else:
 *                 if (0, state) in arcs:
 */
          goto __pyx_L8;
          goto __pyx_L13;
        }
        __pyx_L13:;
        goto __pyx_L9;
      }
      __pyx_L9:;
    }
    /*else*/ {

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":96
 *                         break # To continue the outer while loop
 *             else:
 *                 if (0, state) in arcs:             # <<<<<<<<<<<<<<
 *                     # An accepting state, pop it and try something else
 *                     self.pop()
 */
      __pyx_4 = PyInt_FromLong(__pyx_v_state); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_2 = PyTuple_New(2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_int_0);
      PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
      __pyx_4 = 0;
      __pyx_1 = (PySequence_Contains(__pyx_v_arcs, ((PyObject *)__pyx_2))); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
      if (__pyx_1) {

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":98
 *                 if (0, state) in arcs:
 *                     # An accepting state, pop it and try something else
 *                     self.pop()             # <<<<<<<<<<<<<<
 *                     if not self.stack:
 *                         # Done parsing, but another token is input
 */
        ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->__pyx_vtab)->pop(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self));

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":99
 *                     # An accepting state, pop it and try something else
 *                     self.pop()
 *                     if not self.stack:             # <<<<<<<<<<<<<<
 *                         # Done parsing, but another token is input
 *                         raise ParseError("too much input",
 */
        __pyx_8 = __Pyx_PyObject_IsTrue(((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self)->stack); if (unlikely(__pyx_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_1 = (!__pyx_8);
        if (__pyx_1) {

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":101
 *                     if not self.stack:
 *                         # Done parsing, but another token is input
 *                         raise ParseError("too much input",             # <<<<<<<<<<<<<<
 *                                          type, value, context)
 *                 else:
 */
          __pyx_7 = __Pyx_GetName(__pyx_m, __pyx_kp_ParseError); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

          /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":102
 *                         # Done parsing, but another token is input
 *                         raise ParseError("too much input",
 *                                          type, value, context)             # <<<<<<<<<<<<<<
 *                 else:
 *                     # No success finding a transition
 */
          __pyx_4 = PyTuple_New(4); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_INCREF(__pyx_kp_5);
          PyTuple_SET_ITEM(__pyx_4, 0, __pyx_kp_5);
          Py_INCREF(__pyx_v_type);
          PyTuple_SET_ITEM(__pyx_4, 1, __pyx_v_type);
          Py_INCREF(__pyx_v_value);
          PyTuple_SET_ITEM(__pyx_4, 2, __pyx_v_value);
          Py_INCREF(__pyx_v_context);
          PyTuple_SET_ITEM(__pyx_4, 3, __pyx_v_context);
          __pyx_2 = PyObject_Call(__pyx_7, ((PyObject *)__pyx_4), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          Py_DECREF(__pyx_7); __pyx_7 = 0;
          Py_DECREF(((PyObject *)__pyx_4)); __pyx_4 = 0;
          __Pyx_Raise(__pyx_2, 0, 0);
          Py_DECREF(__pyx_2); __pyx_2 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          goto __pyx_L15;
        }
        __pyx_L15:;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":105
 *                 else:
 *                     # No success finding a transition
 *                     raise ParseError("bad input", type, value, context)             # <<<<<<<<<<<<<<
 * 
 *     cdef int classify(self, type, value, context):
 */
        __pyx_7 = __Pyx_GetName(__pyx_m, __pyx_kp_ParseError); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_4 = PyTuple_New(4); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_INCREF(__pyx_kp_6);
        PyTuple_SET_ITEM(__pyx_4, 0, __pyx_kp_6);
        Py_INCREF(__pyx_v_type);
        PyTuple_SET_ITEM(__pyx_4, 1, __pyx_v_type);
        Py_INCREF(__pyx_v_value);
        PyTuple_SET_ITEM(__pyx_4, 2, __pyx_v_value);
        Py_INCREF(__pyx_v_context);
        PyTuple_SET_ITEM(__pyx_4, 3, __pyx_v_context);
        __pyx_2 = PyObject_Call(__pyx_7, ((PyObject *)__pyx_4), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_7); __pyx_7 = 0;
        Py_DECREF(((PyObject *)__pyx_4)); __pyx_4 = 0;
        __Pyx_Raise(__pyx_2, 0, 0);
        Py_DECREF(__pyx_2); __pyx_2 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L14:;
    }
    __pyx_L8:;
    Py_DECREF(__pyx_3); __pyx_3 = 0;
  }

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  Py_XDECREF(__pyx_4);
  Py_XDECREF(__pyx_7);
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.addtoken");
  __pyx_r = NULL;
  __pyx_L0:;
  Py_DECREF(__pyx_v_dfa);
  Py_DECREF(__pyx_v_node);
  Py_DECREF(__pyx_v_states);
  Py_DECREF(__pyx_v_first);
  Py_DECREF(__pyx_v_arcs);
  Py_DECREF(__pyx_v_v);
  Py_DECREF(__pyx_v_itsdfa);
  Py_DECREF(__pyx_v_itsstates);
  Py_DECREF(__pyx_v_itsfirst);
  return __pyx_r;
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":107
 *                     raise ParseError("bad input", type, value, context)
 * 
 *     cdef int classify(self, type, value, context):             # <<<<<<<<<<<<<<
 *         """Turn a token into a label.  (Internal)"""
 *         if type == NAME:
 */

static  int __pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_classify(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_v_self, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_context) {
  PyObject *__pyx_v_ilabel;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  int __pyx_2;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  int __pyx_5;
  __pyx_v_ilabel = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":109
 *     cdef int classify(self, type, value, context):
 *         """Turn a token into a label.  (Internal)"""
 *         if type == NAME:             # <<<<<<<<<<<<<<
 *             # Keep a listing of all used names
 *             self.used_names.add(value)
 */
  __pyx_1 = PyObject_RichCompare(__pyx_v_type, __pyx_int_1, Py_EQ); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_1); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  if (__pyx_2) {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":111
 *         if type == NAME:
 *             # Keep a listing of all used names
 *             self.used_names.add(value)             # <<<<<<<<<<<<<<
 *             # Check for reserved words
 *             ilabel = self._grammar_keywords.get(value)
 */
    __pyx_1 = PyObject_GetAttr(__pyx_v_self->used_names, __pyx_kp_add); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_value);
    __pyx_4 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
    Py_DECREF(__pyx_4); __pyx_4 = 0;

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":113
 *             self.used_names.add(value)
 *             # Check for reserved words
 *             ilabel = self._grammar_keywords.get(value)             # <<<<<<<<<<<<<<
 *             if ilabel is not None:
 *                 return ilabel
 */
    __pyx_1 = PyObject_GetAttr(__pyx_v_self->_grammar_keywords, __pyx_kp_get); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_value);
    __pyx_4 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
    Py_DECREF(__pyx_v_ilabel);
    __pyx_v_ilabel = __pyx_4;
    __pyx_4 = 0;

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":114
 *             # Check for reserved words
 *             ilabel = self._grammar_keywords.get(value)
 *             if ilabel is not None:             # <<<<<<<<<<<<<<
 *                 return ilabel
 *         ilabel = self._grammar_tokens.get(type)
 */
    __pyx_2 = (__pyx_v_ilabel != Py_None);
    if (__pyx_2) {

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":115
 *             ilabel = self._grammar_keywords.get(value)
 *             if ilabel is not None:
 *                 return ilabel             # <<<<<<<<<<<<<<
 *         ilabel = self._grammar_tokens.get(type)
 *         if ilabel is None:
 */
      __pyx_5 = __pyx_PyInt_int(__pyx_v_ilabel); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_r = __pyx_5;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":116
 *             if ilabel is not None:
 *                 return ilabel
 *         ilabel = self._grammar_tokens.get(type)             # <<<<<<<<<<<<<<
 *         if ilabel is None:
 *             raise ParseError("bad token", type, value, context)
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_self->_grammar_tokens, __pyx_kp_get); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_type);
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_type);
  __pyx_4 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
  Py_DECREF(__pyx_v_ilabel);
  __pyx_v_ilabel = __pyx_4;
  __pyx_4 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":117
 *                 return ilabel
 *         ilabel = self._grammar_tokens.get(type)
 *         if ilabel is None:             # <<<<<<<<<<<<<<
 *             raise ParseError("bad token", type, value, context)
 *         return ilabel
 */
  __pyx_2 = (__pyx_v_ilabel == Py_None);
  if (__pyx_2) {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":118
 *         ilabel = self._grammar_tokens.get(type)
 *         if ilabel is None:
 *             raise ParseError("bad token", type, value, context)             # <<<<<<<<<<<<<<
 *         return ilabel
 * 
 */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_ParseError); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_3 = PyTuple_New(4); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_INCREF(__pyx_kp_7);
    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_kp_7);
    Py_INCREF(__pyx_v_type);
    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_type);
    Py_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_value);
    Py_INCREF(__pyx_v_context);
    PyTuple_SET_ITEM(__pyx_3, 3, __pyx_v_context);
    __pyx_4 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
    __Pyx_Raise(__pyx_4, 0, 0);
    Py_DECREF(__pyx_4); __pyx_4 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":119
 *         if ilabel is None:
 *             raise ParseError("bad token", type, value, context)
 *         return ilabel             # <<<<<<<<<<<<<<
 * 
 *     cdef void shift(self, type, value, newstate, context):
 */
  __pyx_5 = __pyx_PyInt_int(__pyx_v_ilabel); if (unlikely((__pyx_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_5;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_3);
  Py_XDECREF(__pyx_4);
  __Pyx_WriteUnraisable("sphinx.pycode.pgen2.parse.Parser.classify");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_ilabel);
  return __pyx_r;
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":121
 *         return ilabel
 * 
 *     cdef void shift(self, type, value, newstate, context):             # <<<<<<<<<<<<<<
 *         """Shift a token.  (Internal)"""
 *         dfa, state, node = self.stack[-1]
 */

static  void __pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_shift(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_v_self, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_newstate, PyObject *__pyx_v_context) {
  PyObject *__pyx_v_dfa;
  PyObject *__pyx_v_state;
  PyObject *__pyx_v_node;
  PyObject *__pyx_v_newnode;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_4;
  __pyx_v_dfa = Py_None; Py_INCREF(Py_None);
  __pyx_v_state = Py_None; Py_INCREF(Py_None);
  __pyx_v_node = Py_None; Py_INCREF(Py_None);
  __pyx_v_newnode = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":123
 *     cdef void shift(self, type, value, newstate, context):
 *         """Shift a token.  (Internal)"""
 *         dfa, state, node = self.stack[-1]             # <<<<<<<<<<<<<<
 *         newnode = (type, value, context, None)
 *         newnode = self.convert(newnode)
 */
  __pyx_1 = __Pyx_GetItemInt(__pyx_v_self->stack, -1, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyTuple_CheckExact(__pyx_1) && PyTuple_GET_SIZE(__pyx_1) == 3) {
    PyObject* tuple = __pyx_1;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 0);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_dfa);
    __pyx_v_dfa = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_state);
    __pyx_v_state = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 2);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_node);
    __pyx_v_node = __pyx_3;
    __pyx_3 = 0;
    Py_DECREF(__pyx_1); __pyx_1 = 0;
  }
  else {
    __pyx_2 = PyObject_GetIter(__pyx_1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_dfa);
    __pyx_v_dfa = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_state);
    __pyx_v_state = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_node);
    __pyx_v_node = __pyx_3;
    __pyx_3 = 0;
    if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
  }

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":124
 *         """Shift a token.  (Internal)"""
 *         dfa, state, node = self.stack[-1]
 *         newnode = (type, value, context, None)             # <<<<<<<<<<<<<<
 *         newnode = self.convert(newnode)
 *         if newnode is not None:
 */
  __pyx_3 = PyTuple_New(4); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_type);
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_type);
  Py_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_value);
  Py_INCREF(__pyx_v_context);
  PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_context);
  Py_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_3, 3, Py_None);
  Py_DECREF(__pyx_v_newnode);
  __pyx_v_newnode = ((PyObject *)__pyx_3);
  __pyx_3 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":125
 *         dfa, state, node = self.stack[-1]
 *         newnode = (type, value, context, None)
 *         newnode = self.convert(newnode)             # <<<<<<<<<<<<<<
 *         if newnode is not None:
 *             node[-1].append(newnode)
 */
  __pyx_1 = ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self->__pyx_vtab)->convert(__pyx_v_self, __pyx_v_newnode); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_v_newnode);
  __pyx_v_newnode = __pyx_1;
  __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":126
 *         newnode = (type, value, context, None)
 *         newnode = self.convert(newnode)
 *         if newnode is not None:             # <<<<<<<<<<<<<<
 *             node[-1].append(newnode)
 *         self.stack[-1] = (dfa, newstate, node)
 */
  __pyx_4 = (__pyx_v_newnode != Py_None);
  if (__pyx_4) {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":127
 *         newnode = self.convert(newnode)
 *         if newnode is not None:
 *             node[-1].append(newnode)             # <<<<<<<<<<<<<<
 *         self.stack[-1] = (dfa, newstate, node)
 * 
 */
    __pyx_2 = __Pyx_GetItemInt(__pyx_v_node, -1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_3 = __Pyx_PyObject_Append(__pyx_2, __pyx_v_newnode); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":128
 *         if newnode is not None:
 *             node[-1].append(newnode)
 *         self.stack[-1] = (dfa, newstate, node)             # <<<<<<<<<<<<<<
 * 
 *     cdef void push(self, type, newdfa, newstate, context):
 */
  __pyx_1 = PyTuple_New(3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_dfa);
  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_dfa);
  Py_INCREF(__pyx_v_newstate);
  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_v_newstate);
  Py_INCREF(__pyx_v_node);
  PyTuple_SET_ITEM(__pyx_1, 2, __pyx_v_node);
  if (__Pyx_SetItemInt(__pyx_v_self->stack, -1, ((PyObject *)__pyx_1), 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_WriteUnraisable("sphinx.pycode.pgen2.parse.Parser.shift");
  __pyx_L0:;
  Py_DECREF(__pyx_v_dfa);
  Py_DECREF(__pyx_v_state);
  Py_DECREF(__pyx_v_node);
  Py_DECREF(__pyx_v_newnode);
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":130
 *         self.stack[-1] = (dfa, newstate, node)
 * 
 *     cdef void push(self, type, newdfa, newstate, context):             # <<<<<<<<<<<<<<
 *         """Push a nonterminal.  (Internal)"""
 *         dfa, state, node = self.stack[-1]
 */

static  void __pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_push(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_v_self, PyObject *__pyx_v_type, PyObject *__pyx_v_newdfa, PyObject *__pyx_v_newstate, PyObject *__pyx_v_context) {
  PyObject *__pyx_v_dfa;
  PyObject *__pyx_v_state;
  PyObject *__pyx_v_node;
  PyObject *__pyx_v_newnode;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  __pyx_v_dfa = Py_None; Py_INCREF(Py_None);
  __pyx_v_state = Py_None; Py_INCREF(Py_None);
  __pyx_v_node = Py_None; Py_INCREF(Py_None);
  __pyx_v_newnode = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":132
 *     cdef void push(self, type, newdfa, newstate, context):
 *         """Push a nonterminal.  (Internal)"""
 *         dfa, state, node = self.stack[-1]             # <<<<<<<<<<<<<<
 *         newnode = (type, None, context, [])
 *         self.stack[-1] = (dfa, newstate, node)
 */
  __pyx_1 = __Pyx_GetItemInt(__pyx_v_self->stack, -1, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyTuple_CheckExact(__pyx_1) && PyTuple_GET_SIZE(__pyx_1) == 3) {
    PyObject* tuple = __pyx_1;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 0);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_dfa);
    __pyx_v_dfa = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_state);
    __pyx_v_state = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 2);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_node);
    __pyx_v_node = __pyx_3;
    __pyx_3 = 0;
    Py_DECREF(__pyx_1); __pyx_1 = 0;
  }
  else {
    __pyx_2 = PyObject_GetIter(__pyx_1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_dfa);
    __pyx_v_dfa = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_state);
    __pyx_v_state = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_node);
    __pyx_v_node = __pyx_3;
    __pyx_3 = 0;
    if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
  }

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":133
 *         """Push a nonterminal.  (Internal)"""
 *         dfa, state, node = self.stack[-1]
 *         newnode = (type, None, context, [])             # <<<<<<<<<<<<<<
 *         self.stack[-1] = (dfa, newstate, node)
 *         self.stack.append((newdfa, 0, newnode))
 */
  __pyx_3 = PyList_New(0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_1 = PyTuple_New(4); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_type);
  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_type);
  Py_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_1, 1, Py_None);
  Py_INCREF(__pyx_v_context);
  PyTuple_SET_ITEM(__pyx_1, 2, __pyx_v_context);
  PyTuple_SET_ITEM(__pyx_1, 3, ((PyObject *)__pyx_3));
  __pyx_3 = 0;
  Py_DECREF(__pyx_v_newnode);
  __pyx_v_newnode = ((PyObject *)__pyx_1);
  __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":134
 *         dfa, state, node = self.stack[-1]
 *         newnode = (type, None, context, [])
 *         self.stack[-1] = (dfa, newstate, node)             # <<<<<<<<<<<<<<
 *         self.stack.append((newdfa, 0, newnode))
 * 
 */
  __pyx_2 = PyTuple_New(3); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_dfa);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_dfa);
  Py_INCREF(__pyx_v_newstate);
  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_v_newstate);
  Py_INCREF(__pyx_v_node);
  PyTuple_SET_ITEM(__pyx_2, 2, __pyx_v_node);
  if (__Pyx_SetItemInt(__pyx_v_self->stack, -1, ((PyObject *)__pyx_2), 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":135
 *         newnode = (type, None, context, [])
 *         self.stack[-1] = (dfa, newstate, node)
 *         self.stack.append((newdfa, 0, newnode))             # <<<<<<<<<<<<<<
 * 
 *     cdef void pop(self):
 */
  __pyx_3 = PyTuple_New(3); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_v_newdfa);
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_newdfa);
  Py_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_int_0);
  Py_INCREF(__pyx_v_newnode);
  PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_newnode);
  __pyx_1 = __Pyx_PyObject_Append(__pyx_v_self->stack, ((PyObject *)__pyx_3)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
  Py_DECREF(__pyx_1); __pyx_1 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_WriteUnraisable("sphinx.pycode.pgen2.parse.Parser.push");
  __pyx_L0:;
  Py_DECREF(__pyx_v_dfa);
  Py_DECREF(__pyx_v_state);
  Py_DECREF(__pyx_v_node);
  Py_DECREF(__pyx_v_newnode);
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":137
 *         self.stack.append((newdfa, 0, newnode))
 * 
 *     cdef void pop(self):             # <<<<<<<<<<<<<<
 *         """Pop a nonterminal.  (Internal)"""
 *         popdfa, popstate, popnode = self.stack.pop()
 */

static  void __pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_pop(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_v_self) {
  PyObject *__pyx_v_popdfa;
  PyObject *__pyx_v_popstate;
  PyObject *__pyx_v_popnode;
  PyObject *__pyx_v_newnode;
  PyObject *__pyx_v_dfa;
  PyObject *__pyx_v_state;
  PyObject *__pyx_v_node;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_4;
  __pyx_v_popdfa = Py_None; Py_INCREF(Py_None);
  __pyx_v_popstate = Py_None; Py_INCREF(Py_None);
  __pyx_v_popnode = Py_None; Py_INCREF(Py_None);
  __pyx_v_newnode = Py_None; Py_INCREF(Py_None);
  __pyx_v_dfa = Py_None; Py_INCREF(Py_None);
  __pyx_v_state = Py_None; Py_INCREF(Py_None);
  __pyx_v_node = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":139
 *     cdef void pop(self):
 *         """Pop a nonterminal.  (Internal)"""
 *         popdfa, popstate, popnode = self.stack.pop()             # <<<<<<<<<<<<<<
 *         newnode = self.convert(popnode)
 *         if newnode is not None:
 */
  __pyx_1 = PyObject_GetAttr(__pyx_v_self->stack, __pyx_kp_pop); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyTuple_CheckExact(__pyx_2) && PyTuple_GET_SIZE(__pyx_2) == 3) {
    PyObject* tuple = __pyx_2;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 0);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_popdfa);
    __pyx_v_popdfa = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_popstate);
    __pyx_v_popstate = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = PyTuple_GET_ITEM(tuple, 2);
    Py_INCREF(__pyx_3);
    Py_DECREF(__pyx_v_popnode);
    __pyx_v_popnode = __pyx_3;
    __pyx_3 = 0;
    Py_DECREF(__pyx_2); __pyx_2 = 0;
  }
  else {
    __pyx_1 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_popdfa);
    __pyx_v_popdfa = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_popstate);
    __pyx_v_popstate = __pyx_3;
    __pyx_3 = 0;
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_popnode);
    __pyx_v_popnode = __pyx_3;
    __pyx_3 = 0;
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
  }

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":140
 *         """Pop a nonterminal.  (Internal)"""
 *         popdfa, popstate, popnode = self.stack.pop()
 *         newnode = self.convert(popnode)             # <<<<<<<<<<<<<<
 *         if newnode is not None:
 *             if self.stack:
 */
  __pyx_3 = ((struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser *)__pyx_v_self->__pyx_vtab)->convert(__pyx_v_self, __pyx_v_popnode); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_v_newnode);
  __pyx_v_newnode = __pyx_3;
  __pyx_3 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":141
 *         popdfa, popstate, popnode = self.stack.pop()
 *         newnode = self.convert(popnode)
 *         if newnode is not None:             # <<<<<<<<<<<<<<
 *             if self.stack:
 *                 dfa, state, node = self.stack[-1]
 */
  __pyx_4 = (__pyx_v_newnode != Py_None);
  if (__pyx_4) {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":142
 *         newnode = self.convert(popnode)
 *         if newnode is not None:
 *             if self.stack:             # <<<<<<<<<<<<<<
 *                 dfa, state, node = self.stack[-1]
 *                 node[-1].append(newnode)
 */
    __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->stack); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_4) {

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":143
 *         if newnode is not None:
 *             if self.stack:
 *                 dfa, state, node = self.stack[-1]             # <<<<<<<<<<<<<<
 *                 node[-1].append(newnode)
 *             else:
 */
      __pyx_2 = __Pyx_GetItemInt(__pyx_v_self->stack, -1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (PyTuple_CheckExact(__pyx_2) && PyTuple_GET_SIZE(__pyx_2) == 3) {
        PyObject* tuple = __pyx_2;
        __pyx_3 = PyTuple_GET_ITEM(tuple, 0);
        Py_INCREF(__pyx_3);
        Py_DECREF(__pyx_v_dfa);
        __pyx_v_dfa = __pyx_3;
        __pyx_3 = 0;
        __pyx_3 = PyTuple_GET_ITEM(tuple, 1);
        Py_INCREF(__pyx_3);
        Py_DECREF(__pyx_v_state);
        __pyx_v_state = __pyx_3;
        __pyx_3 = 0;
        __pyx_3 = PyTuple_GET_ITEM(tuple, 2);
        Py_INCREF(__pyx_3);
        Py_DECREF(__pyx_v_node);
        __pyx_v_node = __pyx_3;
        __pyx_3 = 0;
        Py_DECREF(__pyx_2); __pyx_2 = 0;
      }
      else {
        __pyx_1 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_2); __pyx_2 = 0;
        __pyx_3 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_v_dfa);
        __pyx_v_dfa = __pyx_3;
        __pyx_3 = 0;
        __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_v_state);
        __pyx_v_state = __pyx_3;
        __pyx_3 = 0;
        __pyx_3 = __Pyx_UnpackItem(__pyx_1, 2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_v_node);
        __pyx_v_node = __pyx_3;
        __pyx_3 = 0;
        if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        Py_DECREF(__pyx_1); __pyx_1 = 0;
      }

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":144
 *             if self.stack:
 *                 dfa, state, node = self.stack[-1]
 *                 node[-1].append(newnode)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.rootnode = newnode
 */
      __pyx_3 = __Pyx_GetItemInt(__pyx_v_node, -1, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_2 = __Pyx_PyObject_Append(__pyx_3, __pyx_v_newnode); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      Py_DECREF(__pyx_3); __pyx_3 = 0;
      Py_DECREF(__pyx_2); __pyx_2 = 0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":146
 *                 node[-1].append(newnode)
 *             else:
 *                 self.rootnode = newnode             # <<<<<<<<<<<<<<
 *                 self.rootnode.used_names = self.used_names
 * 
 */
      Py_INCREF(__pyx_v_newnode);
      Py_DECREF(__pyx_v_self->rootnode);
      __pyx_v_self->rootnode = __pyx_v_newnode;

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":147
 *             else:
 *                 self.rootnode = newnode
 *                 self.rootnode.used_names = self.used_names             # <<<<<<<<<<<<<<
 * 
 *     cdef convert(self, raw_node):
 */
      if (PyObject_SetAttr(__pyx_v_self->rootnode, __pyx_kp_used_names, __pyx_v_self->used_names) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_WriteUnraisable("sphinx.pycode.pgen2.parse.Parser.pop");
  __pyx_L0:;
  Py_DECREF(__pyx_v_popdfa);
  Py_DECREF(__pyx_v_popstate);
  Py_DECREF(__pyx_v_popnode);
  Py_DECREF(__pyx_v_newnode);
  Py_DECREF(__pyx_v_dfa);
  Py_DECREF(__pyx_v_state);
  Py_DECREF(__pyx_v_node);
}

/* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":149
 *                 self.rootnode.used_names = self.used_names
 * 
 *     cdef convert(self, raw_node):             # <<<<<<<<<<<<<<
 *         type, value, context, children = raw_node
 *         if children or type in self._grammar_number2symbol:
 */

static  PyObject *__pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_convert(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *__pyx_v_self, PyObject *__pyx_v_raw_node) {
  PyObject *__pyx_v_type;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_context;
  PyObject *__pyx_v_children;
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  int __pyx_3;
  Py_ssize_t __pyx_4 = 0;
  PyObject *__pyx_5 = 0;
  PyObject *__pyx_6 = 0;
  __pyx_v_type = Py_None; Py_INCREF(Py_None);
  __pyx_v_value = Py_None; Py_INCREF(Py_None);
  __pyx_v_context = Py_None; Py_INCREF(Py_None);
  __pyx_v_children = Py_None; Py_INCREF(Py_None);

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":150
 * 
 *     cdef convert(self, raw_node):
 *         type, value, context, children = raw_node             # <<<<<<<<<<<<<<
 *         if children or type in self._grammar_number2symbol:
 *             # If there's exactly one child, return that child instead of
 */
  if (PyTuple_CheckExact(__pyx_v_raw_node) && PyTuple_GET_SIZE(__pyx_v_raw_node) == 4) {
    PyObject* tuple = __pyx_v_raw_node;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0);
    Py_INCREF(__pyx_2);
    Py_DECREF(__pyx_v_type);
    __pyx_v_type = __pyx_2;
    __pyx_2 = 0;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 1);
    Py_INCREF(__pyx_2);
    Py_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_2;
    __pyx_2 = 0;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 2);
    Py_INCREF(__pyx_2);
    Py_DECREF(__pyx_v_context);
    __pyx_v_context = __pyx_2;
    __pyx_2 = 0;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 3);
    Py_INCREF(__pyx_2);
    Py_DECREF(__pyx_v_children);
    __pyx_v_children = __pyx_2;
    __pyx_2 = 0;
  }
  else {
    __pyx_1 = PyObject_GetIter(__pyx_v_raw_node); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_type);
    __pyx_v_type = __pyx_2;
    __pyx_2 = 0;
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_2;
    __pyx_2 = 0;
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_context);
    __pyx_v_context = __pyx_2;
    __pyx_2 = 0;
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 3); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_v_children);
    __pyx_v_children = __pyx_2;
    __pyx_2 = 0;
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
  }

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":151
 *     cdef convert(self, raw_node):
 *         type, value, context, children = raw_node
 *         if children or type in self._grammar_number2symbol:             # <<<<<<<<<<<<<<
 *             # If there's exactly one child, return that child instead of
 *             # creating a new node.
 */
  __pyx_2 = __pyx_v_children;
  Py_INCREF(__pyx_2);
  __pyx_3 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (!__pyx_3) {
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_3 = (PySequence_Contains(__pyx_v_self->_grammar_number2symbol, __pyx_v_type)); if (unlikely(__pyx_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_2 = __Pyx_PyBool_FromLong(__pyx_3); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_3 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  if (__pyx_3) {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":154
 *             # If there's exactly one child, return that child instead of
 *             # creating a new node.
 *             if len(children) == 1:             # <<<<<<<<<<<<<<
 *                 return children[0]
 *             return Node(type, children, context=context)
 */
    __pyx_4 = PyObject_Length(__pyx_v_children); if (unlikely(__pyx_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_3 = (__pyx_4 == 1);
    if (__pyx_3) {

      /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":155
 *             # creating a new node.
 *             if len(children) == 1:
 *                 return children[0]             # <<<<<<<<<<<<<<
 *             return Node(type, children, context=context)
 *         else:
 */
      __pyx_1 = __Pyx_GetItemInt(__pyx_v_children, 0, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_r = __pyx_1;
      __pyx_1 = 0;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":156
 *             if len(children) == 1:
 *                 return children[0]
 *             return Node(type, children, context=context)             # <<<<<<<<<<<<<<
 *         else:
 *             return Leaf(type, value, context=context)
 */
    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_Node); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_INCREF(__pyx_v_type);
    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_type);
    Py_INCREF(__pyx_v_children);
    PyTuple_SET_ITEM(__pyx_1, 1, __pyx_v_children);
    __pyx_5 = PyDict_New(); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_5, __pyx_kp_context, __pyx_v_context) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_6 = PyEval_CallObjectWithKeywords(__pyx_2, ((PyObject *)__pyx_1), ((PyObject *)__pyx_5)); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
    Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
    __pyx_r = __pyx_6;
    __pyx_6 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":158
 *             return Node(type, children, context=context)
 *         else:
 *             return Leaf(type, value, context=context)             # <<<<<<<<<<<<<<
 */
    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_Leaf); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_INCREF(__pyx_v_type);
    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_type);
    Py_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_1, 1, __pyx_v_value);
    __pyx_5 = PyDict_New(); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_5, __pyx_kp_context, __pyx_v_context) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_6 = PyEval_CallObjectWithKeywords(__pyx_2, ((PyObject *)__pyx_1), ((PyObject *)__pyx_5)); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
    Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
    __pyx_r = __pyx_6;
    __pyx_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_5);
  Py_XDECREF(__pyx_6);
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse.Parser.convert");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_type);
  Py_DECREF(__pyx_v_value);
  Py_DECREF(__pyx_v_context);
  Py_DECREF(__pyx_v_children);
  return __pyx_r;
}
static struct __pyx_vtabstruct_6sphinx_6pycode_5pgen2_5parse_Parser __pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser;

static PyObject *__pyx_tp_new_6sphinx_6pycode_5pgen2_5parse_Parser(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)o);
  p->__pyx_vtab = __pyx_vtabptr_6sphinx_6pycode_5pgen2_5parse_Parser;
  p->grammar = Py_None; Py_INCREF(Py_None);
  p->stack = Py_None; Py_INCREF(Py_None);
  p->rootnode = Py_None; Py_INCREF(Py_None);
  p->used_names = Py_None; Py_INCREF(Py_None);
  p->_grammar_dfas = Py_None; Py_INCREF(Py_None);
  p->_grammar_labels = Py_None; Py_INCREF(Py_None);
  p->_grammar_keywords = Py_None; Py_INCREF(Py_None);
  p->_grammar_tokens = Py_None; Py_INCREF(Py_None);
  p->_grammar_number2symbol = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6sphinx_6pycode_5pgen2_5parse_Parser(PyObject *o) {
  struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *p = (struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)o;
  Py_XDECREF(p->grammar);
  Py_XDECREF(p->stack);
  Py_XDECREF(p->rootnode);
  Py_XDECREF(p->used_names);
  Py_XDECREF(p->_grammar_dfas);
  Py_XDECREF(p->_grammar_labels);
  Py_XDECREF(p->_grammar_keywords);
  Py_XDECREF(p->_grammar_tokens);
  Py_XDECREF(p->_grammar_number2symbol);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6sphinx_6pycode_5pgen2_5parse_Parser(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *p = (struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)o;
  if (p->grammar) {
    e = (*v)(p->grammar, a); if (e) return e;
  }
  if (p->stack) {
    e = (*v)(p->stack, a); if (e) return e;
  }
  if (p->rootnode) {
    e = (*v)(p->rootnode, a); if (e) return e;
  }
  if (p->used_names) {
    e = (*v)(p->used_names, a); if (e) return e;
  }
  if (p->_grammar_dfas) {
    e = (*v)(p->_grammar_dfas, a); if (e) return e;
  }
  if (p->_grammar_labels) {
    e = (*v)(p->_grammar_labels, a); if (e) return e;
  }
  if (p->_grammar_keywords) {
    e = (*v)(p->_grammar_keywords, a); if (e) return e;
  }
  if (p->_grammar_tokens) {
    e = (*v)(p->_grammar_tokens, a); if (e) return e;
  }
  if (p->_grammar_number2symbol) {
    e = (*v)(p->_grammar_number2symbol, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6sphinx_6pycode_5pgen2_5parse_Parser(PyObject *o) {
  struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *p = (struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->grammar);
  p->grammar = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->stack);
  p->stack = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->rootnode);
  p->rootnode = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->used_names);
  p->used_names = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grammar_dfas);
  p->_grammar_dfas = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grammar_labels);
  p->_grammar_labels = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grammar_keywords);
  p->_grammar_keywords = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grammar_tokens);
  p->_grammar_tokens = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grammar_number2symbol);
  p->_grammar_number2symbol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_6sphinx_6pycode_5pgen2_5parse_Parser[] = {
  {"setup", (PyCFunction)__pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser_setup, METH_VARARGS|METH_KEYWORDS, 0},
  {"addtoken", (PyCFunction)__pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser_addtoken, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6sphinx_6pycode_5pgen2_5parse_6Parser_addtoken},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_6sphinx_6pycode_5pgen2_5parse_Parser[] = {
  {"grammar", T_OBJECT, offsetof(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser, grammar), 0, 0},
  {"stack", T_OBJECT, offsetof(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser, stack), 0, 0},
  {"rootnode", T_OBJECT, offsetof(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser, rootnode), 0, 0},
  {"used_names", T_OBJECT, offsetof(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser, used_names), 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Parser = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Parser = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Parser = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Parser = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_NEWBUFFER)
  0, /*bf_getbuffer*/
  #endif
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_NEWBUFFER)
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_6sphinx_6pycode_5pgen2_5parse_Parser = {
  PyVarObject_HEAD_INIT(0, 0)
  "sphinx.pycode.pgen2.parse.Parser", /*tp_name*/
  sizeof(struct __pyx_obj_6sphinx_6pycode_5pgen2_5parse_Parser), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6sphinx_6pycode_5pgen2_5parse_Parser, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_Parser, /*tp_as_number*/
  &__pyx_tp_as_sequence_Parser, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Parser, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Parser, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6sphinx_6pycode_5pgen2_5parse_Parser, /*tp_traverse*/
  __pyx_tp_clear_6sphinx_6pycode_5pgen2_5parse_Parser, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6sphinx_6pycode_5pgen2_5parse_Parser, /*tp_methods*/
  __pyx_members_6sphinx_6pycode_5pgen2_5parse_Parser, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_6sphinx_6pycode_5pgen2_5parse_6Parser___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6sphinx_6pycode_5pgen2_5parse_Parser, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};

static struct PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};

static void __pyx_init_filenames(void); /*proto*/

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    "parse",
    0, /* m_doc */
    -1, /* m_size */
    __pyx_methods /* m_methods */,
    NULL, /* m_reload */
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 0, 1, 1},
  {&__pyx_kp_setup, __pyx_k_setup, sizeof(__pyx_k_setup), 0, 1, 1},
  {&__pyx_kp_addtoken, __pyx_k_addtoken, sizeof(__pyx_k_addtoken), 0, 1, 1},
  {&__pyx_kp_1, __pyx_k_1, sizeof(__pyx_k_1), 1, 1, 1},
  {&__pyx_kp_Node, __pyx_k_Node, sizeof(__pyx_k_Node), 1, 1, 1},
  {&__pyx_kp_Leaf, __pyx_k_Leaf, sizeof(__pyx_k_Leaf), 1, 1, 1},
  {&__pyx_kp_ParseError, __pyx_k_ParseError, sizeof(__pyx_k_ParseError), 0, 1, 1},
  {&__pyx_kp_Exception, __pyx_k_Exception, sizeof(__pyx_k_Exception), 1, 1, 1},
  {&__pyx_kp_msg, __pyx_k_msg, sizeof(__pyx_k_msg), 1, 1, 1},
  {&__pyx_kp_type, __pyx_k_type, sizeof(__pyx_k_type), 1, 1, 1},
  {&__pyx_kp_value, __pyx_k_value, sizeof(__pyx_k_value), 1, 1, 1},
  {&__pyx_kp_context, __pyx_k_context, sizeof(__pyx_k_context), 1, 1, 1},
  {&__pyx_kp_dfas, __pyx_k_dfas, sizeof(__pyx_k_dfas), 1, 1, 1},
  {&__pyx_kp_labels, __pyx_k_labels, sizeof(__pyx_k_labels), 1, 1, 1},
  {&__pyx_kp_keywords, __pyx_k_keywords, sizeof(__pyx_k_keywords), 1, 1, 1},
  {&__pyx_kp_tokens, __pyx_k_tokens, sizeof(__pyx_k_tokens), 1, 1, 1},
  {&__pyx_kp_4, __pyx_k_4, sizeof(__pyx_k_4), 1, 1, 1},
  {&__pyx_kp_start, __pyx_k_start, sizeof(__pyx_k_start), 1, 1, 1},
  {&__pyx_kp_add, __pyx_k_add, sizeof(__pyx_k_add), 1, 1, 1},
  {&__pyx_kp_get, __pyx_k_get, sizeof(__pyx_k_get), 1, 1, 1},
  {&__pyx_kp_append, __pyx_k_append, sizeof(__pyx_k_append), 1, 1, 1},
  {&__pyx_kp_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 1, 1, 1},
  {&__pyx_kp_used_names, __pyx_k_used_names, sizeof(__pyx_k_used_names), 1, 1, 1},
  {&__pyx_kp_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 0},
  {&__pyx_kp_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 0},
  {&__pyx_kp_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 0},
  {&__pyx_kp_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 0},
  {&__pyx_kp_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 0},
  {0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_Exception = __Pyx_GetName(__pyx_b, __pyx_kp_Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitGlobals(void) {
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initparse(void); /*proto*/
PyMODINIT_FUNC initparse(void)
#else
PyMODINIT_FUNC PyInit_parse(void); /*proto*/
PyMODINIT_FUNC PyInit_parse(void)
#endif
{
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Libary function declarations ---*/
  __pyx_init_filenames();
  /*--- Initialize various global constants etc. ---*/
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("parse", __pyx_methods, 0, 0, PYTHON_API_VERSION);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  #if PY_MAJOR_VERSION < 3
  Py_INCREF(__pyx_m);
  #endif
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME);
  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  /*--- Builtin init code ---*/
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_skip_dispatch = 0;
  /*--- Global init code ---*/
  /*--- Function export code ---*/
  /*--- Type init code ---*/
  __pyx_vtabptr_6sphinx_6pycode_5pgen2_5parse_Parser = &__pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser;
  *(void(**)(void))&__pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser.classify = (void(*)(void))__pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_classify;
  *(void(**)(void))&__pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser.shift = (void(*)(void))__pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_shift;
  *(void(**)(void))&__pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser.push = (void(*)(void))__pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_push;
  *(void(**)(void))&__pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser.pop = (void(*)(void))__pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_pop;
  *(void(**)(void))&__pyx_vtable_6sphinx_6pycode_5pgen2_5parse_Parser.convert = (void(*)(void))__pyx_f_6sphinx_6pycode_5pgen2_5parse_6Parser_convert;
  if (PyType_Ready(&__pyx_type_6sphinx_6pycode_5pgen2_5parse_Parser) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6sphinx_6pycode_5pgen2_5parse_Parser.tp_dict, __pyx_vtabptr_6sphinx_6pycode_5pgen2_5parse_Parser) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyObject_SetAttrString(__pyx_m, "Parser", (PyObject *)&__pyx_type_6sphinx_6pycode_5pgen2_5parse_Parser) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6sphinx_6pycode_5pgen2_5parse_Parser = &__pyx_type_6sphinx_6pycode_5pgen2_5parse_Parser;
  /*--- Type import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":15
 * """
 * 
 * from sphinx.pycode.nodes import Node, Leaf             # <<<<<<<<<<<<<<
 * 
 * DEF NAME = 1
 */
  __pyx_1 = PyList_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_kp_Node);
  PyList_SET_ITEM(__pyx_1, 0, __pyx_kp_Node);
  Py_INCREF(__pyx_kp_Leaf);
  PyList_SET_ITEM(__pyx_1, 1, __pyx_kp_Leaf);
  __pyx_2 = __Pyx_Import(__pyx_kp_1, ((PyObject *)__pyx_1)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
  __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_Node); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_Node, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_Leaf); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_Leaf, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":19
 * DEF NAME = 1
 * 
 * class ParseError(Exception):             # <<<<<<<<<<<<<<
 *     """Exception to signal the parser is stuck."""
 * 
 */
  __pyx_2 = PyDict_New(); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_builtin_Exception);
  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_builtin_Exception);
  if (PyDict_SetItemString(((PyObject *)__pyx_2), "__doc__", __pyx_kp_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_3 = __Pyx_CreateClass(((PyObject *)__pyx_1), ((PyObject *)__pyx_2), __pyx_kp_ParseError, "sphinx.pycode.pgen2.parse"); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":22
 *     """Exception to signal the parser is stuck."""
 * 
 *     def __init__(self, msg, type, value, context):             # <<<<<<<<<<<<<<
 *         Exception.__init__(self, "%s: type=%r, value=%r, context=%r" %
 *                            (msg, type, value, context))
 */
  __pyx_1 = PyCFunction_New(&__pyx_mdef_6sphinx_6pycode_5pgen2_5parse_10ParseError___init__, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_4 = PyMethod_New(__pyx_1, 0, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyObject_SetAttr(__pyx_3, __pyx_kp___init__, __pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ParseError, __pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;

  /* "/home/gbr/devel/sphinx/sphinx/pycode/pgen2/parse.pyx":149
 *                 self.rootnode.used_names = self.used_names
 * 
 *     cdef convert(self, raw_node):             # <<<<<<<<<<<<<<
 *         type, value, context, children = raw_node
 *         if children or type in self._grammar_number2symbol:
 */
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
  __pyx_L1_error:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  Py_XDECREF(__pyx_4);
  __Pyx_AddTraceback("sphinx.pycode.pgen2.parse");
  #if PY_MAJOR_VERSION >= 3
  return NULL;
  #endif
}

static const char *__pyx_filenames[] = {
  "parse.pyx",
};

/* Runtime support code */

static void __pyx_init_filenames(void) {
  __pyx_f = __pyx_filenames;
}

static INLINE void __Pyx_RaiseArgtupleTooLong(
    Py_ssize_t num_expected,
    Py_ssize_t num_found)
{
    const char* error_message =
    #if PY_VERSION_HEX < 0x02050000
        "function takes at most %d positional arguments (%d given)";
    #else
        "function takes at most %zd positional arguments (%zd given)";
    #endif
    PyErr_Format(PyExc_TypeError, error_message, num_expected, num_found);
}

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) {
    PyObject *__import__ = 0;
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    __import__ = PyObject_GetAttrString(__pyx_b, "__import__");
    if (!__import__)
        goto bad;
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    module = PyObject_CallFunction(__import__, "OOOO",
        name, global_dict, empty_dict, list);
bad:
    Py_XDECREF(empty_list);
    Py_XDECREF(__import__);
    Py_XDECREF(empty_dict);
    return module;
}

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
    PyObject *result;
    result = PyObject_GetAttr(dict, name);
    if (!result)
        PyErr_SetObject(PyExc_NameError, name);
    return result;
}

static PyObject *__Pyx_CreateClass(
    PyObject *bases, PyObject *dict, PyObject *name, char *modname)
{
    PyObject *py_modname;
    PyObject *result = 0;

    #if PY_MAJOR_VERSION < 3
    py_modname = PyString_FromString(modname);
    #else
    py_modname = PyUnicode_FromString(modname);
    #endif
    if (!py_modname)
        goto bad;
    if (PyDict_SetItemString(dict, "__module__", py_modname) < 0)
        goto bad;
    #if PY_MAJOR_VERSION < 3
    result = PyClass_New(bases, dict, name);
    #else
    result = PyObject_CallFunctionObjArgs((PyObject *)&PyType_Type, name, bases, dict, NULL);
    #endif
bad:
    Py_XDECREF(py_modname);
    return result;
}


static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
    PyObject *item;
    if (!(item = PyIter_Next(iter))) {
        if (!PyErr_Occurred()) {
            PyErr_Format(PyExc_ValueError,
                #if PY_VERSION_HEX < 0x02050000
                    "need more than %d values to unpack", (int)index);
                #else
                    "need more than %zd values to unpack", index);
                #endif
        }
    }
    return item;
}

static int __Pyx_EndUnpack(PyObject *iter) {
    PyObject *item;
    if ((item = PyIter_Next(iter))) {
        Py_DECREF(item);
        PyErr_SetString(PyExc_ValueError, "too many values to unpack");
        return -1;
    }
    else if (!PyErr_Occurred())
        return 0;
    else
        return -1;
}

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
    Py_XINCREF(type);
    Py_XINCREF(value);
    Py_XINCREF(tb);
    /* First, check the traceback argument, replacing None with NULL. */
    if (tb == Py_None) {
        Py_DECREF(tb);
        tb = 0;
    }
    else if (tb != NULL && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto raise_error;
    }
    /* Next, replace a missing value with None */
    if (value == NULL) {
        value = Py_None;
        Py_INCREF(value);
    }
    #if PY_VERSION_HEX < 0x02050000
    if (!PyClass_Check(type))
    #else
    if (!PyType_Check(type))
    #endif
    {
        /* Raising an instance.  The value should be a dummy. */
        if (value != Py_None) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        /* Normalize to raise <class>, <instance> */
        Py_DECREF(value);
        value = type;
        #if PY_VERSION_HEX < 0x02050000
            if (PyInstance_Check(type)) {
                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
                Py_INCREF(type);
            }
            else {
                type = 0;
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception must be an old-style class or instance");
                goto raise_error;
            }
        #else
            type = (PyObject*) Py_TYPE(type);
            Py_INCREF(type);
            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception class must be a subclass of BaseException");
                goto raise_error;
            }
        #endif
    }
    PyErr_Restore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}


static void __Pyx_WriteUnraisable(const char *name) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    PyErr_Fetch(&old_exc, &old_val, &old_tb);
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    PyErr_Restore(old_exc, old_val, old_tb);
    if (!ctx)
        ctx = Py_None;
    PyErr_WriteUnraisable(ctx);
}

static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
    PyObject *pycobj = 0;
    int result;
    
    pycobj = PyCObject_FromVoidPtr(vtable, 0);
    if (!pycobj)
        goto bad;
    if (PyDict_SetItemString(dict, "__pyx_vtable__", pycobj) < 0)
        goto bad;
    result = 0;
    goto done;

bad:
    result = -1;
done:
    Py_XDECREF(pycobj);
    return result;
}

#include "compile.h"
#include "frameobject.h"
#include "traceback.h"

static void __Pyx_AddTraceback(const char *funcname) {
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    PyObject *py_globals = 0;
    PyObject *empty_string = 0;
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;

    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(__pyx_filename);
    #else
    py_srcfile = PyUnicode_FromString(__pyx_filename);
    #endif
    if (!py_srcfile) goto bad;
    if (__pyx_clineno) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_globals = PyModule_GetDict(__pyx_m);
    if (!py_globals) goto bad;
    #if PY_MAJOR_VERSION < 3
    empty_string = PyString_FromStringAndSize("", 0);
    #else
    empty_string = PyBytes_FromStringAndSize("", 0);
    #endif
    if (!empty_string) goto bad;
    py_code = PyCode_New(
        0,            /*int argcount,*/
        #if PY_MAJOR_VERSION >= 3
        0,            /*int kwonlyargcount,*/
        #endif
        0,            /*int nlocals,*/
        0,            /*int stacksize,*/
        0,            /*int flags,*/
        empty_string, /*PyObject *code,*/
        __pyx_empty_tuple,  /*PyObject *consts,*/
        __pyx_empty_tuple,  /*PyObject *names,*/
        __pyx_empty_tuple,  /*PyObject *varnames,*/
        __pyx_empty_tuple,  /*PyObject *freevars,*/
        __pyx_empty_tuple,  /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        __pyx_lineno,   /*int firstlineno,*/
        empty_string  /*PyObject *lnotab*/
    );
    if (!py_code) goto bad;
    py_frame = PyFrame_New(
        PyThreadState_Get(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        py_globals,          /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = __pyx_lineno;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    Py_XDECREF(empty_string);
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode && (!t->is_identifier)) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else  /* Python 3+ has unicode identifiers */
        if (t->is_identifier || (t->is_unicode && t->intern)) {
            *t->p = PyUnicode_InternFromString(t->s);
        } else if (t->is_unicode) {
            *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

/* Type Conversion Functions */

static INLINE Py_ssize_t __pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject* x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}

static INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   if (x == Py_True) return 1;
   else if (x == Py_False) return 0;
   else return PyObject_IsTrue(x);
}

static INLINE PY_LONG_LONG __pyx_PyInt_AsLongLong(PyObject* x) {
    if (PyInt_CheckExact(x)) {
        return PyInt_AS_LONG(x);
    }
    else if (PyLong_CheckExact(x)) {
        return PyLong_AsLongLong(x);
    }
    else {
        PY_LONG_LONG val;
        PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
        val = __pyx_PyInt_AsLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static INLINE unsigned PY_LONG_LONG __pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
    if (PyInt_CheckExact(x)) {
        long val = PyInt_AS_LONG(x);
        if (unlikely(val < 0)) {
            PyErr_SetString(PyExc_TypeError, "Negative assignment to unsigned type.");
            return (unsigned PY_LONG_LONG)-1;
        }
        return val;
    }
    else if (PyLong_CheckExact(x)) {
        return PyLong_AsUnsignedLongLong(x);
    }
    else {
        PY_LONG_LONG val;
        PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
        val = __pyx_PyInt_AsUnsignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}


static INLINE unsigned char __pyx_PyInt_unsigned_char(PyObject* x) {
    if (sizeof(unsigned char) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        unsigned char val = (unsigned char)long_val;
        if (unlikely((val != long_val)  || (long_val < 0))) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned char");
            return (unsigned char)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE unsigned short __pyx_PyInt_unsigned_short(PyObject* x) {
    if (sizeof(unsigned short) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        unsigned short val = (unsigned short)long_val;
        if (unlikely((val != long_val)  || (long_val < 0))) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned short");
            return (unsigned short)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE char __pyx_PyInt_char(PyObject* x) {
    if (sizeof(char) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        char val = (char)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to char");
            return (char)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE short __pyx_PyInt_short(PyObject* x) {
    if (sizeof(short) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        short val = (short)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to short");
            return (short)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE int __pyx_PyInt_int(PyObject* x) {
    if (sizeof(int) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        int val = (int)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to int");
            return (int)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE long __pyx_PyInt_long(PyObject* x) {
    if (sizeof(long) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        long val = (long)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to long");
            return (long)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed char __pyx_PyInt_signed_char(PyObject* x) {
    if (sizeof(signed char) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed char val = (signed char)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed char");
            return (signed char)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed short __pyx_PyInt_signed_short(PyObject* x) {
    if (sizeof(signed short) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed short val = (signed short)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed short");
            return (signed short)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed int __pyx_PyInt_signed_int(PyObject* x) {
    if (sizeof(signed int) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed int val = (signed int)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed int");
            return (signed int)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed long __pyx_PyInt_signed_long(PyObject* x) {
    if (sizeof(signed long) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed long val = (signed long)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed long");
            return (signed long)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE long double __pyx_PyInt_long_double(PyObject* x) {
    if (sizeof(long double) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        long double val = (long double)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to long double");
            return (long double)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

