Devicetree
 help / color / mirror / Atom feed
From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Jon Loeliger <jdl-CYoMK+44s/E@public.gmane.org>
Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org
Subject: Re: [3/5] dtc: Cleanup yyerrorf() function
Date: Sat, 4 Oct 2008 12:56:41 +1000	[thread overview]
Message-ID: <20081004025641.GF30184@yookeroo.seuss> (raw)
In-Reply-To: <E1KlqEb-0006Io-Sc-CYoMK+44s/E@public.gmane.org>

On Fri, Oct 03, 2008 at 02:22:41PM -0500, Jon Loeliger wrote:
> > Currently, we put the source file name into the yylloc variable, but
> > never use the stored value.  Instead the yyerrorf() function directly
> > accesses srcpos_file to get the input file name.
> > 
> > That works in practice, but is likely not to always be correct if we
> > ever re-enable the glr-parser option.  Even now, its correctness
> > relies on the exact point in time bison executes the semantic rules
> > w.r.t. to the lexing rules, which is probably correct but not
> > obviously correct, which is far from ideal.
> > 
> > So, this patch replaces yyerrorf() with a srcpos_error() function
> > which pulls the filename information out of the yylloc variable, which
> > bison is explicitly supposed to get right for us.
> > 
> > Signed-off-by: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
> 
> This isn't how I'd like to see this work at all.
> 
> The original intent goes like this:
> 
> - As a file is referenced, it is put on a list (or array) of files.
>   This list is essentially write-only so that any file ever
>   referenced accumulates into this list.
> 
> - The source positions maintain a pointer (or index) into that
>   table of file names.

Ok, this is not a bad idea.  But there's no sign of this "original
intent" either in what we had before, or in what's there after your
new language series.  dtc_file structures are just allocated bare,
free()ed on dtc_file_close() and pointers to them are handed around
unsafely.

> - The table of files is *always* available, even long after
>   parsing has finished.

Again, not a bad idea - it certainly fixes the lifetime issue.  But
orthogonal certainly from this patch, and really from 4/5 too.

> - There is an entirely different stack of directories that
>   tracks where file references are resolved.

Again, orthogonal.  The stack could easily reference a table of files
rather than containing the file information directly.

> Thus, a routine like srcpos_error() should take a srcpos
> for its basis information.  Yes, that is the same type
> as the YYLTYPE during parsing, but my point is that the
> srcpos type is conceptually longer lasting than just parsing
> and will be available by later semantic processing passes too.

Huh!?  This makes no sense to me.  AFAICT the discussion above is
talking about the lifetime and allocation of dtc_file structures, or
something of similar intent.  Now you're talking about the srcpos
structures.  I don't see how either this patch of mine, or the next
makes the srcpos/YYLTYPE structure *not* potentially longer lasting.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

  parent reply	other threads:[~2008-10-04  2:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-02 14:04 [0/5] dtc: srcpos, input handling cleanups David Gibson
     [not found] ` <20081002140427.GD11662-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 14:05   ` [1/5] dtc: Implement and use an xstrdup() function David Gibson
     [not found]     ` <20081002140512.GE11662-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 14:05       ` [2/5] dtc: Use flex's YY_USER_ACTION feature to avoid code duplication David Gibson
     [not found]         ` <20081002140556.GF11662-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 14:06           ` [3/5] dtc: Cleanup yyerrorf() function David Gibson
     [not found]             ` <20081002140652.GG11662-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 14:07               ` [4/5] dtc: Cleanup yylloc type and handling David Gibson
     [not found]                 ` <20081002140753.GH11662-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 14:09                   ` [5/5] dtc: Clean up source file management David Gibson
2008-10-03 19:24                   ` [4/5] dtc: Cleanup yylloc type and handling Jon Loeliger
     [not found]                     ` <E1KlqGI-0006JF-6p-CYoMK+44s/E@public.gmane.org>
2008-10-04  2:25                       ` David Gibson
2008-10-03 19:22               ` [3/5] dtc: Cleanup yyerrorf() function Jon Loeliger
     [not found]                 ` <E1KlqEb-0006Io-Sc-CYoMK+44s/E@public.gmane.org>
2008-10-04  2:56                   ` David Gibson [this message]
2008-10-02 16:25           ` [2/5] dtc: Use flex's YY_USER_ACTION feature to avoid code duplication Jon Loeliger
2008-10-03  1:05             ` David Gibson
     [not found]               ` <20081003010531.GE3002-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-03 14:17                 ` Jon Loeliger
     [not found]                   ` <48E62991.6010102-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2008-10-04  4:13                     ` David Gibson
2008-10-03 17:16           ` Jon Loeliger
2008-10-03 17:17       ` [1/5] dtc: Implement and use an xstrdup() function Jon Loeliger
     [not found]         ` <E1KloHP-0005pb-R8-CYoMK+44s/E@public.gmane.org>
2008-10-04  2:49           ` David Gibson

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=20081004025641.GF30184@yookeroo.seuss \
    --to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
    --cc=devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org \
    --cc=jdl-CYoMK+44s/E@public.gmane.org \
    /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