public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Joseph S. Myers" <jsm@polyomino.org.uk>
To: Kyuupi <kyuupichan@gmail.com>
Cc: Zack Weinberg <zack@codesourcery.com>, gcc-patches@gcc.gnu.org
Subject: Re: New C parser [patch]
Date: Tue, 26 Oct 2004 12:32:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.61.0410261208140.22661@digraph.polyomino.org.uk> (raw)
In-Reply-To: <2116058a04102604421a21c068@mail.gmail.com>

On Tue, 26 Oct 2004, Kyuupi wrote:

> > Distinguishing whether '(' in an expression starts a parenthesised
> > subexpression, a statement expression or is followed by a type name.
> > (Also after sizeof and alignof.)
> 
> This wasn't necessary in the parser I have written.

It's not strictly necessary if you consume the parenthesis and then have 
functions c_parser_{cast,unary}_expression_after_open_paren or similar.  
But I don't think there's anything intrinsically bad about using 2nd token 
lookahead (given it is needed elsewhere) and my parser doesn't recurse 
everywhere it could simply so as to be more "pure" recursive descent: it 
recurses where pragmatically convenient to make the code clearer or where 
a particular syntax production can occur in more than one place in the 
grammar.  Where more than 2nd token lookahead would be involved in "pure" 
recursive descent, the grammar is simply rearranged locally to avoid the 
problem (as with long sequences of __extension__, all but one discarded 
before deciding whether it is an unary operator or starts a declaration, 
or with sizeof compound-literal, only separable from sizeof ( type ) after 
the ( type ) has been parsed).

> > Distinguishing whether an identifier in an expression is followed by '('
> > and so could be an implicit function declaration.
> 
> I don't believe this is either.

This is rather an incident of the implementation: it could save the 
identifier in a temporary, consume the token and then look at the next 
token to determine the second argument to build_external_ref, but at 
present it uses slightly briefer source without the temporary.  This may 
change in a followup patch to fix bug 8927 by passing the location of the 
identifier to build_external_ref as well as its value.

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)

  reply	other threads:[~2004-10-26 12:21 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-23  1:25 Joseph S. Myers
2004-10-23  2:39 ` Steven Bosscher
2004-10-23  4:15   ` Joseph S. Myers
2004-10-23  5:44 ` Scott Robert Ladd
2004-10-24 22:49 ` Joseph S. Myers
2004-10-26  0:32   ` Zack Weinberg
2004-10-26  1:03     ` Andrew Pinski
2004-10-26  1:03       ` Zack Weinberg
2004-10-26  1:11         ` Joseph S. Myers
2004-10-26  8:23           ` Zack Weinberg
2004-10-26  1:30       ` Gabriel Dos Reis
2004-10-26  1:06     ` Joseph S. Myers
2004-10-26  2:47       ` Joseph S. Myers
2004-10-26  3:48         ` Mark Mitchell
2004-10-26 12:21       ` Kyuupi
2004-10-26 12:32         ` Joseph S. Myers [this message]
2004-10-26 11:42     ` Joseph S. Myers
2004-10-27 19:04     ` Richard Henderson
2004-10-27 19:11       ` Richard Guenther
2004-10-27 19:41         ` Zack Weinberg
2004-10-27 19:31       ` Zack Weinberg
2004-10-27 21:31         ` Richard Henderson
2004-10-28  7:38           ` Alan Modra
2004-10-27 20:25   ` Joseph S. Myers
2004-10-25 22:33 ` Ziemowit Laski
2004-10-25 22:51   ` Joseph S. Myers
2004-10-25 23:45     ` Ziemowit Laski
2004-10-25 23:53       ` Scott Robert Ladd
2004-10-26  0:03         ` Unified front end for C and C++ (was Re: New C parser [patch]) Matt Austern
2004-10-26  1:26           ` Scott Robert Ladd
2004-10-26  1:43             ` Gabriel Dos Reis
2004-10-26  2:01               ` Scott Robert Ladd
2004-10-26 15:38                 ` Gabriel Dos Reis
2004-10-26  0:28         ` New C parser [patch] Ziemowit Laski
2004-10-26  1:20           ` Scott Robert Ladd
2004-10-26  6:08             ` Unified C and C++ front end (was Re: New C parser [patch]) Matt Austern
2004-10-26 11:14               ` Joseph S. Myers
2004-10-26 16:04                 ` Gabriel Dos Reis
2004-10-26 16:51                   ` Joseph S. Myers
2004-10-26  0:37         ` New C parser [patch] Joseph S. Myers
2004-10-26  0:03     ` Stan Shebs
2004-10-26  1:46       ` Gabriel Dos Reis

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=Pine.LNX.4.61.0410261208140.22661@digraph.polyomino.org.uk \
    --to=jsm@polyomino.org.uk \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=kyuupichan@gmail.com \
    --cc=zack@codesourcery.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).