The Include, Parser, and Python directories from the cPython 2.7.10 distribution. These files are unchanged and set the baseline for subsequent commits. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Daryl McDaniel <edk2-lists@mc2research.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18737 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			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, "? ");
 | 
						|
}
 |