This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: new parser: error recovery needs work
- From: dewar at gnat dot com (Robert Dewar)
- To: phil at jaj dot com, tilps at hotmail dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 19 Jan 2003 08:15:15 -0500 (EST)
- Subject: Re: new parser: error recovery needs work
> (I think i heard something about carat errors being on
> the way,
A little note here. I assume carat error means errors where there is a pointer
to the column of the error.
What we found very useful in GNAT was to define the following routines:
procedure Error_Msg_AP (Msg : String);
-- Output a message just after the previous token. This routine can be
-- called only from the parser, since it references Prev_Token_Ptr.
procedure Error_Msg_BC (Msg : String);
-- Output a message just before the current token. Note that the important
-- difference between this and the previous routine is that the BC case
-- posts a flag on the current line, whereas AP can post a flag at the
-- end of the preceding line. This routine can be called only from the
-- parser, since it references Token_Ptr.
procedure Error_Msg_SC (Msg : String);
-- Output a message at the start of the current token, unless we are at
-- the end of file, in which case we always output the message after the
-- last real token in the file. This routine can be called only from the
-- parser, since it references Token_Ptr.
procedure Error_Msg_SP (Msg : String);
-- Output a message at the start of the previous token. This routine can
-- be called only from the parser, since it references Prev_Token_Ptr.
This allows very precise placement of the message pointers. One danger of
message pointers is that if they are not exactly right, they can obfuscate
rather than clarify the error.