diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/python3.8/grammar.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/python3.8/grammar.h	Tue Mar 18 17:55:14 2025 -0400
@@ -0,0 +1,77 @@
+
+/* Grammar interface */
+
+#ifndef Py_GRAMMAR_H
+#define Py_GRAMMAR_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "bitset.h" /* Sigh... */
+
+/* A label of an arc */
+
+typedef struct {
+    int          lb_type;
+    const char  *lb_str;
+} label;
+
+#define EMPTY 0         /* Label number 0 is by definition the empty label */
+
+/* A list of labels */
+
+typedef struct {
+    int          ll_nlabels;
+    const label *ll_label;
+} labellist;
+
+/* An arc from one state to another */
+
+typedef struct {
+    short       a_lbl;          /* Label of this arc */
+    short       a_arrow;        /* State where this arc goes to */
+} arc;
+
+/* A state in a DFA */
+
+typedef struct {
+    int          s_narcs;
+    const arc   *s_arc;         /* Array of arcs */
+
+    /* Optional accelerators */
+    int          s_lower;       /* Lowest label index */
+    int          s_upper;       /* Highest label index */
+    int         *s_accel;       /* Accelerator */
+    int          s_accept;      /* Nonzero for accepting state */
+} state;
+
+/* A DFA */
+
+typedef struct {
+    int          d_type;        /* Non-terminal this represents */
+    char        *d_name;        /* For printing */
+    int          d_nstates;
+    state       *d_state;       /* Array of states */
+    bitset       d_first;
+} dfa;
+
+/* A grammar */
+
+typedef struct {
+    int          g_ndfas;
+    const dfa   *g_dfa;         /* Array of DFAs */
+    const labellist g_ll;
+    int          g_start;       /* Start symbol of the grammar */
+    int          g_accel;       /* Set if accelerators present */
+} grammar;
+
+/* FUNCTIONS */
+const dfa *PyGrammar_FindDFA(grammar *g, int type);
+const char *PyGrammar_LabelRepr(label *lb);
+void PyGrammar_AddAccelerators(grammar *g);
+void PyGrammar_RemoveAccelerators(grammar *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !Py_GRAMMAR_H */