help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bison error handling


From: sgaurelius
Subject: Re: Bison error handling
Date: Fri, 12 Dec 2008 06:14:27 -0800 (PST)

So, you re saying to do the first and add more errors as I find more errors.
Yeah, I guess this is the optimal.

Since it goes deep until finding the first error, it will print messages for
all errors or for the most basic one ? The latter is better I think.

Stratis


Hans Aberg wrote:
> 
> On 12 Dec 2008, at 00:39, sgaurelius wrote:
> 
>> if I want to define, exactly what messages or actions bison should  
>> do when
>> an error occurs, what should I do. From what I 've searched, either  
>> I can do
>>
>> 1) what is says in
>> http://www.slac.stanford.edu/comp/unix/gnu-info/bison_9.html
>> or
>> 2) what is says in
>> http://www.ibm.com/developerworks/linux/library/l-flexbison.html? 
>> ca=dgr-lnxw16FlexAndBisonErrorHand
>>
>> The problem with the first is, that I have to strictly define all the
>> possible errors and messages for the whole grammar, whereas I would  
>> prefer a
>> more abstract solution.
>> The problem with 2) is that, it doesn't really defines exactly the  
>> messages,
>> only it enriches them. So bison produces better messages, without the
>> programmer to define what it'll print or do, when an error occurs.
> 
> The 'error' token works in a similar way to the 'catch' of C++; the  
> 'throw' is the error itself, syntactic, or generated by an action  
> (see manual).
> 
> So you put in as many of them as you like: more if you want to fine- 
> tune. So, if "file" is the sentence symbol, one might start with say:
> file:
>      file_contents {}
>    |               {}
>    | error {
>        declaration_context = false;
>        YYABORT;
>      }
> ;
> if say one just wants to abort and reset a lexer global variable.
> 
> Then refine, and put in more 'error' tokens as you go along. When the  
> Bison encounters a generated error, it unwinds the parser stack until  
> the first generated 'error' token state is encountered.
> 
> As you see they put the 'error' token close to other tokens. The LALR 
> (1) that Bison uses compacts states so am error may not be issued  
> immediately, after some reductions. Therefore, error recovery may not  
> be so good. Using LR(1) without such state compaction having that  
> flaw might be better.
> 
>    Hans
> 
> 
> 
> 
> _______________________________________________
> address@hidden http://lists.gnu.org/mailman/listinfo/help-bison
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Bison-error-handling-tp20964993p20976407.html
Sent from the Gnu - Bison - Help mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]