Lot of untested changes.
[confparser-old] / confparser.py
index 123b402..00cc961 100644 (file)
@@ -5,6 +5,23 @@ import sys
 
 __all__ = [ 'parse' , 'printTree' ]
 
+#
+# expr := <item> <item>* { <expr>* } | <item> <item>* ';'
+# item := [_a-zA-Z][0-9a-zA-Z]* | '...' | "..."
+#
+
+#
+# >>> confparser.printTree( confparser.parse( 'foo; bar;\nc; sub { sub-foo; sub-bar; }' ) )
+# foo ; # 1:1
+# bar ; # 1:6
+# c ; # 2:1
+# sub { # 2:4
+#   sub-foo ; # 2:10
+#   sub-bar ; # 2:19
+# }
+# >>> 
+#
+
 # FIXME: Build "preparsed" file ?
 
 # TODO: Rewrite all of this more clearly
@@ -180,15 +197,22 @@ def printTreeInner( t , prt = sys.stdout.write , prefix = '' ) :
        prt( t[ 0 ] )
        for kw in t[ 1 ] :
                prt( ' ' + kw )
-       prt( ' (%s,%s,%r)' % ( t[ 3 ][ 0 ] , t[ 3 ][ 1 ] , t[ 3 ][ 2 ] ) )
        if len( t[ 2 ] ) > 0 :
-               prt( ' {\n' )
+               prt( ' {' )
+       else :
+               prt( ' ;' )
+       if True :
+               prt( ' # ' )
+               if t[ 3 ][ 2 ] :
+                       prt( '%r:' % t[ 3 ][ 2 ] )
+               prt( '%s:%s' % ( t[ 3 ][ 0 ] , t[ 3 ][ 1 ] ) )
+       prt( '\n' )
+
+       if len( t[ 2 ] ) > 0 :
                for sub in t[ 2 ] :
                        printTreeInner( sub , prt , prefix + '  ' )
                prt( prefix )
                prt( '}\n' )
-       else :
-               prt( ' ;\n' )
 
 #
 # Dump configuration