public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
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.

  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).