Posted to tcl by kbk at Mon Jan 04 22:25:51 GMT 2010view pretty
foreach filename $argv { set f [open $filename 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 incr start set pos2 [expr {$start+1}] while {[regexp -indices -start $pos2 -- $patEnd $script where]} { set end [lindex $where 0] set command [string range $script $start [expr {$end-1}]] if {[info complete $command\n]} { puts $command break } else { set pos2 [expr {$end + 1}] } } set pos [expr {$end + 1}] } }