symbian-qemu-0.9.1-12/python-2.6.1/Parser/grammar1.c
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Parser/grammar1.c	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,57 @@
+
+/* Grammar subroutines needed by parser */
+
+#include "Python.h"
+#include "pgenheaders.h"
+#include "grammar.h"
+#include "token.h"
+
+/* Return the DFA for the given type */
+
+dfa *
+PyGrammar_FindDFA(grammar *g, register int type)
+{
+	register dfa *d;
+#if 1
+	/* Massive speed-up */
+	d = &g->g_dfa[type - NT_OFFSET];
+	assert(d->d_type == type);
+	return d;
+#else
+	/* Old, slow version */
+	register int i;
+	
+	for (i = g->g_ndfas, d = g->g_dfa; --i >= 0; d++) {
+		if (d->d_type == type)
+			return d;
+	}
+	assert(0);
+	/* NOTREACHED */
+#endif
+}
+
+char *
+PyGrammar_LabelRepr(label *lb)
+{
+	static char buf[100];
+	
+	if (lb->lb_type == ENDMARKER)
+		return "EMPTY";
+	else if (ISNONTERMINAL(lb->lb_type)) {
+		if (lb->lb_str == NULL) {
+			PyOS_snprintf(buf, sizeof(buf), "NT%d", lb->lb_type);
+			return buf;
+		}
+		else
+			return lb->lb_str;
+	}
+	else {
+		if (lb->lb_str == NULL)
+			return _PyParser_TokenNames[lb->lb_type];
+		else {
+			PyOS_snprintf(buf, sizeof(buf), "%.32s(%.32s)",
+				_PyParser_TokenNames[lb->lb_type], lb->lb_str);
+			return buf;
+		}
+	}
+}