Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Is there something in parser that always starts new token?



On 2 September 2016 at 18:43, Peter Stephenson <p.stephenson@xxxxxxxxxxx> wrote:
> On Fri, 02 Sep 2016 18:27:11 +0200
> Sebastian Gniazdowski <sgniazdowski@xxxxxxxxx> wrote:
>> Hello
>> a='`something something else'; print -rl -- "${(@z)a}"
>> output: `something something else
>>
>> I would like to manually divide the string after "something". Is there
>> something in (z) flag that could be used to force new token?
>
> The trouble here, as I see it, is that once you've realised the
> expression you've got doesn't work as it is (in this case you've got
> what looks like an incomplete backquoted substitution), what you decide
> to do with it isn't down to the parser, which has given you its
> best shot.

I'm using (z) in a special way: I have that vertical and horizontal
selection list, seen here:

https://asciinema.org/a/8k8v5ni5lnnpoc3z5jzl6jgav

All horizontal blocks navigated with the red highlight are obtained
via (z). So what I need is a way to unconditionally force (z) to start
new token, when I detect that a part of line is unbounded via:

exp='`x'                   # the part of line
exp="$exp test"      # an append to test
tokens=( "${(@z)exp}" )
[ "${#tokens}" = "1" ] && echo unbounded

When I get the "unbounded" condition, I can do exp="$exp (some special
char)" so that (z) will just stop at the special value. This way,
despite adding some random special value to the text, I'll at least
have rest of the text correctly splitted.

Best regards,
Sebastian Gniazdowski



Messages sorted by: Reverse Date, Date, Thread, Author