Posted to tcl by mjanssen at Wed Oct 07 15:31:04 GMT 2020view raw

  1. proc parse {input} {
  2. set prefix " $input"
  3. set part {}
  4. set result {}
  5. set instring false
  6. foreach prev [split $prefix {}] curr [split $input {}] {
  7. if {$instring && $curr eq "\"" && $prev ne "\\"} {
  8. lappend result $part
  9. set instring false
  10. continue
  11. }
  12. if {!$instring && $curr eq "\"" && $prev ne "\\"} {
  13. set part {}
  14. set instring true
  15. continue
  16. }
  17. append part $curr
  18. }
  19. return $result
  20. }