Posted to tcl by kbk at Mon Jan 04 22:08:24 GMT 2010view pretty
set f [open [lindex $argv 0] r]
set script [read $f]
close $f
set patStart {\[('|(?:(?:::)?msgcat::)?mc)\s}
set patEnd {[\];\n]}
set pos 0
while {[regexp -indices -start $pos -- $patStart $script where]} {
foreach {start end} $where break
set pos2 [expr {$start+1}]
while {[regexp -indices -start $pos2 -- $patEnd $script where]} {
set end [lindex $where 0]
set command [string range $script $pos2 [expr {$end - 1}]]
if {[info complete $command]} {
puts $command
break
} else {
set pos2 [expr {$end + 1}]
}
}
set pos [expr {$end + 1}]
}