zsh-workers
 help / color / mirror / code / Atom feed
From: "Andrej Borsenkow" <Andrej.Borsenkow@mow.siemens.ru>
To: "ZSH workers mailing list" <zsh-workers@sunsite.auc.dk>
Subject: Question RE: SourceForge bug id 104052 - case study.
Date: Fri, 18 Aug 2000 13:12:32 +0400	[thread overview]
Message-ID: <000001c008f4$70ef7e80$21c9ca95@mow.siemens.ru> (raw)
In-Reply-To: <000401c006ce$9a5e8810$21c9ca95@mow.siemens.ru>

>
> Case 2.
>
> bor@itsrm2% print $foo[\]]
> ]
> bor@itsrm2% print ${foo[\]]}
> zsh: bad substitution
>
...
>
> Case 2 comes from the fact, that paramsubst() and getindex() treat
> both quoted
> and unquoted brackets the same. The reason is (as I suspect) parameter
> substitution in double-quotes - "$foo[bar]". When it is parsed by
> dquote_parse(), it adds just plain ']' and not Outbrack; so, when it finally
> reaches paramsubst() it may encounter both values. When inside of
> parens, Zsh
> just warns about missing closing one (because it finds end of
> substitution too
> early).
>
...
>
> Case 2 - lexer should return different token for "]" as for \],
> e.g. Qoutbrack
> like Qstring. And, of course, all uses of ']'/Outbrack should be checked ...
> but note, that in this case
>
> $foo[\]]
>
> will be valid, but
>
> "$foo[\]]"
>
> not. By definition, you cannot quote inside of double quotes. Even
>
> $foo["]"]
>
> will be invalid in this case (a bit unexpected), unless code can be smart
> enough to notice, that initial Inbrack was not quoted.
>


This may work if we allow backslash to quote `]' inside of doublequotes.
Because POSIX explcitly forbids it, it should be turned off at least in sh
mode; so something like new option SH_STRICT_QUOTING is needed (or, probably,
even POSIX_STRICT_QUOTING would be better name). That will make $foo[\]] and
"$foo[\]]" both work and produce the same result.

Neither sh nor ksh have this problem, as they do not have associated arrays; I
could not compile new ksh so I do not know how it behaves.

If there is no much con, I'll give it a try.

-andrej



      reply	other threads:[~2000-08-18  9:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-08-15 15:36 Andrej Borsenkow
2000-08-18  9:12 ` Andrej Borsenkow [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000001c008f4$70ef7e80$21c9ca95@mow.siemens.ru' \
    --to=andrej.borsenkow@mow.siemens.ru \
    --cc=zsh-workers@sunsite.auc.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).