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

proc parse {input} {
    set prefix " $input"
    set part {}
    set result {}
    set instring false
    foreach prev [split $prefix {}] curr [split $input {}] {
        if {$instring && $curr eq "\"" && $prev ne "\\"} {
            lappend result $part
            set instring false
            continue
        }
        if {!$instring && $curr eq "\"" && $prev ne "\\"} {
            set part {}
            set instring true
            continue
        }
        append part $curr
    }
    return $result
}