bison-patches
[Top][All Lists]
Advanced

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

Re: [PATCH] todo: short term


From: Akim Demaille
Subject: Re: [PATCH] todo: short term
Date: Sun, 27 Sep 2009 14:50:47 +0200


Le 26 sept. 2009 à 06:24, Joel E. Denny a écrit :

Hi Joel!

On Thu, 17 Sep 2009, Akim Demaille wrote:

+** Use syntax_error from the scanner?
+This would provide a means to raise syntax error from function called
+from the scanner.  Actually, there is no good solution to report a
+lexical error in general. Usually they are kept at the scanner level +only, ignoring the guilty token. But that might not be the best bet,
+since we don't benefit from the syntactic error recovery.
+
+We still have the possibility to return an invalid token number, which
+does the trick.  But then the error message from the parser is poor
+(something like "unexpected $undefined").

To fix that, use %token.

Yes, but what would you return? %token INVALID "invalid token"? This is poor, as compared to wrapping an error message as for instance we currently do in Bison's scanner:

  {directive} {
    complain_at (*loc, _("invalid directive: %s"), quote (yytext));
  }

Since the scanner probably
+already reported the error, we should directly enter error-recovery,
+without reporting the error message (i.e., YYERROR's semantics).

Maybe Bison can define a special token that the scanner can return to
induce a YYERROR?  That seems simpler than a function call.

I think both are nice. A special token is nice when you're in the scanner itself. Throwing an exception is nice in C++, especially from functions called from the scanner.



reply via email to

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