En Sun, 11 Mar 2007 06:34:03 -0300, Mike Schinkel <[EMAIL PROTECTED]>  
escribió:

> I'm trying to write an app that parses a text file containing an outline
> useing essentially the same indentation rules as Python source code, i.e.
> the first level has no indent, the second level has one indent, third

You can get some ideas from tabnanny.py or reindent.py, but perhaps they  
are too specific at parsing Python code.

I hope this informal description may help:

Start with IC = Previous IC = 0, and a stack with a single 0 element
For each line in the file:
   compute the indentation column IC (that is, count the number of leading  
whitespace characters; perhaps replacing tabs as 8 spaces)
   compare IC with the Previous IC:
        same: continue with next line
        IC > previous ("indent"): push IC onto indent stack
        IC < previous ("dedent"):
                discard top of stack
                look at the new top of stack (but dont discard it); if not the 
same,  
indentation error.
   Previous IC = IC
        
Note: You can rewrite the above without using Previous IC, only the  
stack... left to the reader :)
Note 2: At each stage, the "indentation level" is the current stack size.

-- 
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to