Staging
v0.5.1
https://github.com/python/cpython
Revision c7f315a3abcd22aa8cb4e4a864c11861e40d8595 authored by Christian Heimes on 02 October 2008, 18:39:50 UTC, committed by Christian Heimes on 02 October 2008, 18:39:50 UTC
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r66739 | christian.heimes | 2008-10-02 20:33:41 +0200 (Thu, 02 Oct 2008) | 1 line

  Fixed a comment to C89 style as of http://drj11.wordpress.com/2008/10/02/python-and-bragging-about-c89/
........
1 parent cf14b6b
Raw File
Tip revision: c7f315a3abcd22aa8cb4e4a864c11861e40d8595 authored by Christian Heimes on 02 October 2008, 18:39:50 UTC
Merged revisions 66739 via svnmerge from
Tip revision: c7f315a
listnode.c

/* List a node on a file */

#include "pgenheaders.h"
#include "token.h"
#include "node.h"

/* Forward */
static void list1node(FILE *, node *);
static void listnode(FILE *, node *);

void
PyNode_ListTree(node *n)
{
	listnode(stdout, n);
}

static int level, atbol;

static void
listnode(FILE *fp, node *n)
{
	level = 0;
	atbol = 1;
	list1node(fp, n);
}

static void
list1node(FILE *fp, node *n)
{
	if (n == 0)
		return;
	if (ISNONTERMINAL(TYPE(n))) {
		int i;
		for (i = 0; i < NCH(n); i++)
			list1node(fp, CHILD(n, i));
	}
	else if (ISTERMINAL(TYPE(n))) {
		switch (TYPE(n)) {
		case INDENT:
			++level;
			break;
		case DEDENT:
			--level;
			break;
		default:
			if (atbol) {
				int i;
				for (i = 0; i < level; ++i)
					fprintf(fp, "\t");
				atbol = 0;
			}
			if (TYPE(n) == NEWLINE) {
				if (STR(n) != NULL)
					fprintf(fp, "%s", STR(n));
				fprintf(fp, "\n");
				atbol = 1;
			}
			else
				fprintf(fp, "%s ", STR(n));
			break;
		}
	}
	else
		fprintf(fp, "? ");
}
back to top