After the removal of pgen, multiple header and function prototypes that lack implementation or are unused are still lying around.
by the installer).
(See :issue:`36085`.)
+* The header files and functions related to pgen have been removed after its
+ replacement by a pure Python implementation. (Contributed by Pablo Galindo
+ in :issue:`36623`.)
+
Changes in the C API
--------------------
/* Bitset interface */
#define BYTE char
-
typedef BYTE *bitset;
-bitset newbitset(int nbits);
-void delbitset(bitset bs);
#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
-int addbit(bitset bs, int ibit); /* Returns 0 if already set */
-int samebitset(bitset bs1, bitset bs2, int nbits);
-void mergebitset(bitset bs1, bitset bs2, int nbits);
#define BITSPERBYTE (8*sizeof(BYTE))
-#define NBYTES(nbits) (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
-
#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE)
#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE)
#define BIT2MASK(ibit) (1 << BIT2SHIFT(ibit))
-#define BYTE2BIT(ibyte) ((ibyte) * BITSPERBYTE)
#ifdef __cplusplus
}
} grammar;
/* FUNCTIONS */
-
-grammar *newgrammar(int start);
-void freegrammar(grammar *g);
-dfa *adddfa(grammar *g, int type, const char *name);
-int addstate(dfa *d);
-void addarc(dfa *d, int from, int to, int lbl);
dfa *PyGrammar_FindDFA(grammar *g, int type);
-
-int addlabel(labellist *ll, int type, const char *str);
-int findlabel(labellist *ll, int type, const char *str);
const char *PyGrammar_LabelRepr(label *lb);
-void translatelabels(grammar *g);
-
-void addfirstsets(grammar *g);
-
void PyGrammar_AddAccelerators(grammar *g);
void PyGrammar_RemoveAccelerators(grammar *);
-void printgrammar(grammar *g, FILE *fp);
-void printnonterminals(grammar *g, FILE *fp);
-
#ifdef __cplusplus
}
#endif
+++ /dev/null
-#ifndef Py_PGENHEADERS_H
-#define Py_PGENHEADERS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Include files and extern declarations used by most of the parser. */
-
-#include "Python.h"
-
-PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
- Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
- Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-
-#define addarc _Py_addarc
-#define addbit _Py_addbit
-#define adddfa _Py_adddfa
-#define addfirstsets _Py_addfirstsets
-#define addlabel _Py_addlabel
-#define addstate _Py_addstate
-#define delbitset _Py_delbitset
-#define dumptree _Py_dumptree
-#define findlabel _Py_findlabel
-#define freegrammar _Py_freegrammar
-#define mergebitset _Py_mergebitset
-#define meta_grammar _Py_meta_grammar
-#define newbitset _Py_newbitset
-#define newgrammar _Py_newgrammar
-#define pgen _Py_pgen
-#define printgrammar _Py_printgrammar
-#define printnonterminals _Py_printnonterminals
-#define printtree _Py_printtree
-#define samebitset _Py_samebitset
-#define showtree _Py_showtree
-#define tok_dump _Py_tok_dump
-#define translatelabels _Py_translatelabels
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PGENHEADERS_H */
$(srcdir)/Include/osdefs.h \
$(srcdir)/Include/osmodule.h \
$(srcdir)/Include/patchlevel.h \
- $(srcdir)/Include/pgenheaders.h \
$(srcdir)/Include/pyarena.h \
$(srcdir)/Include/pycapsule.h \
$(srcdir)/Include/pyctype.h \
--- /dev/null
+Remove parser headers and related function declarations that lack
+implementations after the removal of pgen.
<ClInclude Include="..\Include\osmodule.h" />
<ClInclude Include="..\Include\parsetok.h" />
<ClInclude Include="..\Include\patchlevel.h" />
- <ClInclude Include="..\Include\pgenheaders.h" />
<ClInclude Include="..\Include\pyhash.h" />
<ClInclude Include="..\Include\py_curses.h" />
<ClInclude Include="..\Include\pyarena.h" />
<ClInclude Include="..\Include\patchlevel.h">
<Filter>Include</Filter>
</ClInclude>
- <ClInclude Include="..\Include\pgenheaders.h">
- <Filter>Include</Filter>
- </ClInclude>
<ClInclude Include="..\Include\py_curses.h">
<Filter>Include</Filter>
</ClInclude>
are not part of the static data structure written on graminit.[ch]
by the parser generator. */
-#include "pgenheaders.h"
+#include "Python.h"
#include "grammar.h"
#include "node.h"
#include "token.h"
/* Grammar subroutines needed by parser */
#include "Python.h"
-#include "pgenheaders.h"
#include "grammar.h"
#include "token.h"
/* List a node on a file */
-#include "pgenheaders.h"
+#include "Python.h"
#include "token.h"
#include "node.h"
/* XXX To do: error recovery */
#include "Python.h"
-#include "pgenheaders.h"
#include "token.h"
#include "grammar.h"
#include "node.h"
int *expected_ret);
void PyGrammar_AddAccelerators(grammar *g);
+
+#define showtree _Py_showtree
+#define printtree _Py_printtree
+#define dumptree _Py_dumptree
+
#ifdef __cplusplus
}
#endif
/* Parser-tokenizer link implementation */
-#include "pgenheaders.h"
+#include "Python.h"
#include "tokenizer.h"
#include "node.h"
#include "grammar.h"
def produce_graminit_c(self, writer):
writer("/* Generated by Parser/pgen */\n\n")
- writer('#include "pgenheaders.h"\n')
writer('#include "grammar.h"\n')
writer("grammar _PyParser_Grammar;\n")
/* Tokenizer implementation */
#include "Python.h"
-#include "pgenheaders.h"
#include <ctype.h>
#include <assert.h>
extern void PyTokenizer_Free(struct tok_state *);
extern int PyTokenizer_Get(struct tok_state *, char **, char **);
+#define tok_dump _Py_tok_dump
+
#ifdef __cplusplus
}
#endif
/* Generated by Parser/pgen */
-#include "pgenheaders.h"
#include "grammar.h"
grammar _PyParser_Grammar;
static arc arcs_0_0[3] = {
/* strdup() replacement (from stdwin, if you must know) */
-#include "pgenheaders.h"
-
char *
strdup(const char *str)
{