Posted to tcl by kbk at Mon Jan 04 22:08:24 GMT 2010view raw

  1. set f [open [lindex $argv 0] r]
  2. set script [read $f]
  3. close $f
  4.  
  5. set patStart {\[('|(?:(?:::)?msgcat::)?mc)\s}
  6. set patEnd {[\];\n]}
  7.  
  8. set pos 0
  9. while {[regexp -indices -start $pos -- $patStart $script where]} {
  10. foreach {start end} $where break
  11. set pos2 [expr {$start+1}]
  12. while {[regexp -indices -start $pos2 -- $patEnd $script where]} {
  13. set end [lindex $where 0]
  14. set command [string range $script $pos2 [expr {$end - 1}]]
  15. if {[info complete $command]} {
  16. puts $command
  17. break
  18. } else {
  19. set pos2 [expr {$end + 1}]
  20. }
  21. }
  22. set pos [expr {$end + 1}]
  23. }