#!/usr/bin/env python # read the linemarkers of a preprocessed output and print the inclusion tree # first line is line 1 for compatibility with grep import sys, re if ( len( sys.argv ) <= 1 or len( sys.argv ) > 3 ): print 'Usage: %s filename [line number]' % ( sys.argv[0] ) filename = sys.argv[1] linetarget = 0 if ( len( sys.argv ) == 3 ): linetarget = int( sys.argv[2] ) includes = [] linemarkpat = re.compile( '^# ([0-9]*) "(.*)" *' ) linecount = 0 f = open( filename ) for l in f.readlines(): linecount += 1 if ( linetarget != 0 and linecount >= linetarget ): print includes break if ( linemarkpat.match( l ) ): s = linemarkpat.split( l ) if ( s[3][0] == '1' ): includes.append( '%s' % s[2] ) if ( linetarget == 0 ): print includes if ( s[3][0] == '2' ): includes.pop() if ( linetarget == 0 ): print includes print '%d lines' % linecount