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

Re: comment block curiosity

On Mon, Jan 4, 2021 at 9:09 AM Ray Andrews <rayandrews@xxxxxxxxxxx> wrote:
> On 2021-01-03 10:10 p.m., Daniel Shahaf wrote:
> >
> > % zsh -f =(print -rC1 -- 'alias -g "|&"=": <<EOC"' 'echo foo' '|&' 'echo bar' 'EOC' 'echo baz')
> That is an invocation only an Adeptus dare use!

A somewhat more readable variation:

% zsh -f =(<<\EOSCRIPT
alias -g "|&"=": <<EOC"
echo foo
echo bar
echo baz

Also, "print -C1" is the same as "print -l" if that makes it more obvious.

> > ... The lexer doesn't emit a token for comments ...
> Is there some way of seeing lexer output?

You get that from
  setopt xtrace
but redirections (including here-documents) are also omitted.
  setopt verbose
gets the contents of the here-document, but neither of those setopts
shows expanded aliases, so with the "|&" alias in place you can't see
the "<<EOC" operator itself.

You can also get a lexical breakdown by using the (z) or (Z+c+)
parameter expansion flags, but those also do not expand aliases and
don't know about here-documents so you get the contents of the
here-document parsed into tokens as well.  I suppose the latter could
be considered a bug.

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