From: Michael Matz <matz@suse.de>
To: Richard Biener <richard.guenther@gmail.com>
Cc: Richard Biener <rguenther@suse.de>, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] Add 'switch' statement to match.pd language
Date: Wed, 15 Jul 2015 15:21:00 -0000 [thread overview]
Message-ID: <alpine.LSU.2.20.1507151658480.23227@wotan.suse.de> (raw)
In-Reply-To: <9742E78F-EF7F-4AFB-8F26-D3B5871BA366@gmail.com>
Hi,
On Wed, 15 Jul 2015, Richard Biener wrote:
> >> (switch
> >> (A) B
> >> (B) C
> >> (C) D
> >> E)
> >
> >The lispy way would have been
> >
> > (switch
> > (A) (B)
> > (C) (D)
> > (E) (F)
> > G)
> >
> >i.e. parenthesize the result as well, which then would be unambiguously
>
> That's just atoms vs. Expressions.
But if the result is no atom, you'd want parentheses. Similar if the
condition is no expression but an atom, you'd want to leave out
parentheses as well. My point is, that both condition and result are at
the same level, and hence should be subject to the same parenthesis rules,
namely: surrounding parens by default, optional for atoms.
> Like (Plus @0 @1) vs. Plain @1. So you suggest to require ((plus @0
> @1)) here to make it unambiguous?
No :) Just look at your example again:
(switch
(A) B
)
Both A and B are at the same level, and are both expressions, but still
you parenthesize them differently; that can't be right. You also don't
write
(switch
((plus @0 @1)) (@0)
)
You write
(switch
(plus @0 @1) (@0)
)
And as syntactic sugar you are allowed to leave out the parens around @0
as it's an atom:
(switch
(plus @0 @1) @0
)
Similar, if the condition is an atom you should be able to leave the
parens away:
(switch
cond (minus @0 @1)
)
(given a predicate 'cond' defined appropriately).
Ciao,
Michael.
next prev parent reply other threads:[~2015-07-15 15:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-14 13:02 Richard Biener
2015-07-15 14:28 ` Michael Matz
2015-07-15 15:04 ` Richard Biener
2015-07-15 15:21 ` Michael Matz [this message]
2015-07-15 18:49 ` Richard Sandiford
2015-07-16 7:29 ` Richard Biener
2015-07-16 7:09 ` Richard Biener
2015-07-16 15:00 ` Michael Matz
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=alpine.LSU.2.20.1507151658480.23227@wotan.suse.de \
--to=matz@suse.de \
--cc=gcc-patches@gcc.gnu.org \
--cc=rguenther@suse.de \
--cc=richard.guenther@gmail.com \
/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.
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 read-only IMAP folder(s) and NNTP newsgroup(s).