+++ /dev/null
-\r
-/* List a node on a file */\r
-\r
-#include "pgenheaders.h"\r
-#include "token.h"\r
-#include "node.h"\r
-\r
-/* Forward */\r
-static void list1node(FILE *, node *);\r
-static void listnode(FILE *, node *);\r
-\r
-void\r
-PyNode_ListTree(node *n)\r
-{\r
- listnode(stdout, n);\r
-}\r
-\r
-static int level, atbol;\r
-\r
-static void\r
-listnode(FILE *fp, node *n)\r
-{\r
- level = 0;\r
- atbol = 1;\r
- list1node(fp, n);\r
-}\r
-\r
-static void\r
-list1node(FILE *fp, node *n)\r
-{\r
- if (n == 0)\r
- return;\r
- if (ISNONTERMINAL(TYPE(n))) {\r
- int i;\r
- for (i = 0; i < NCH(n); i++)\r
- list1node(fp, CHILD(n, i));\r
- }\r
- else if (ISTERMINAL(TYPE(n))) {\r
- switch (TYPE(n)) {\r
- case INDENT:\r
- ++level;\r
- break;\r
- case DEDENT:\r
- --level;\r
- break;\r
- default:\r
- if (atbol) {\r
- int i;\r
- for (i = 0; i < level; ++i)\r
- fprintf(fp, "\t");\r
- atbol = 0;\r
- }\r
- if (TYPE(n) == NEWLINE) {\r
- if (STR(n) != NULL)\r
- fprintf(fp, "%s", STR(n));\r
- fprintf(fp, "\n");\r
- atbol = 1;\r
- }\r
- else\r
- fprintf(fp, "%s ", STR(n));\r
- break;\r
- }\r
- }\r
- else\r
- fprintf(fp, "? ");\r
-}\r