Here is a sample of a string.

```
a (b, c(d and/or e, f, g), h, i[j, k]), l (m, n(o, p[q, r{s or t,u}, v]), w)

```

I need parse this into something like this:

```
{
-a
    -b
    -c
        -d 
        -and/or
        -e
        -f
        -g
    -h
    -i
        -j
        -k
-l
    -m
    -n
        -o
        -p
            -q
            -r
                -s
                -t
                -or
                -u
            -v
    -w
}

```

I started messing with some regex but it got ugly real quick. Any recommendations?

Thanks.