Posted to tcl by kbk at Mon Jan 04 22:25:51 GMT 2010view raw

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