All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Loeliger <jdl-CYoMK+44s/E@public.gmane.org>
To: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org
Subject: Re: [3/5] dtc: Cleanup yyerrorf() function
Date: Fri, 03 Oct 2008 14:22:41 -0500	[thread overview]
Message-ID: <E1KlqEb-0006Io-Sc@jdl.com> (raw)
In-Reply-To: <20081002140652.GG11662-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>

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

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

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

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.

Thanks,
jdl

  parent reply	other threads:[~2008-10-03 19:22 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               ` Jon Loeliger [this message]
     [not found]                 ` <E1KlqEb-0006Io-Sc-CYoMK+44s/E@public.gmane.org>
2008-10-04  2:56                   ` [3/5] dtc: Cleanup yyerrorf() function David Gibson
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=E1KlqEb-0006Io-Sc@jdl.com \
    --to=jdl-cyomk+44s/e@public.gmane.org \
    --cc=david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org \
    --cc=devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.