On Thu 05 Jul 2012, Gilbert Houtekamer wrote:

> I sometimes find myself looking for misplaced and missing brackets for a long 
> time, as context may given errors about a completely different location.
> 
> For example this one took me a while
>    \goto{\url[localhost20381}[url(localhost20381)]
>  
> (missing ] after this localhost20381).
> 
> Is there a SciTE or Notepad++ or command line script that anyone wrote to 
> help with this?  It can be more or less sophisticated, but I found that 
> missing / mismatched { [ ] } give the most confusing errors.  

I wrote the attached Python script a while ago to catch cases like
this, where an opening bracket accidentally ‘contains’ the whole rest
of the file. The script just keeps a running count of the nesting
level, and gives the number of the last line where the nesting level
was zero. Usually the offending bracket is at or very close to that
line. It does that same for \start... and \stop..., in a very stupid 
way (i.e. just counts them without identifying them, wouldn't
catch e.g. \startonething \stopsomeotherthing).

Hope it's helpful,

Pont
#!/usr/bin/python

import sys

'''Count opening and closing braces in a file.'''

def count(filename, opening, closing):
    print opening, closing
    f = open(sys.argv[1], 'r')
    braces = 0
    i = 1
    last_zero = -1
    for line in f.readlines():
        braces += line.count(opening)
        braces -= line.count(closing)
        if braces==0: last_zero = i
        i += 1
    f.close()
    print last_zero

count(sys.argv[1], '{', '}')
count(sys.argv[1], '[', ']')
count(sys.argv[1], '\\start', '\\stop')
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to