bison-patches
[Top][All Lists]
Advanced

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

[PATCH 16/16] todo: update


From: Akim Demaille
Subject: [PATCH 16/16] todo: update
Date: Sun, 26 Apr 2020 16:40:51 +0200

---
 TODO | 123 +++++++++++------------------------------------------------
 1 file changed, 23 insertions(+), 100 deletions(-)

diff --git a/TODO b/TODO
index 28052034..a4fb47b9 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,9 @@
 * Bison 3.6
 ** Questions
+*** C++
+We still have occurrences of `type` that should read `kind`, in
+basic_symbol.
+
 *** Java
 - Should i18n be part of the Lexer?  Currently it's a static method of
   Lexer.
@@ -7,6 +11,10 @@
 - is there a migration path that would allow to use TokenKinds in
   yylex?
 
+- define the tokens as an enum too.
+
+- promote YYEOF rather than EOF.
+
 *** D
 - is there a way to attach yysymbol_name to the enum itself?  As we did
   in Java.
@@ -22,113 +30,28 @@
 Beware that returning 0 is unclear: does it mean there are no possible
 lookahead, or that there are too many?
 
-** YYERRCODE
-How about using "return YYERRCODE" to tell the parser to enter
-error-recovery, but not emit an error message?  I have frequently felt the
-need for the scanner to be able to do that.  In C++ we can, thanks to throw
-syntax_error.
-
-Some people seem to be aware that return YYERRCODE is possible...
-https://github.com/search?q=%22return+YYERRCODE%22&type=Code
-
-*** unixODBC
-There are tons of copies on GitHub, I don't know where the original is.
-
-https://github.com/faiz-akhtar/Calico/blob/01b49089a3eb535380877bbdc6c641b8b4e7ca6f/Drivers/nn/yylex.c
-
-But they define YYERRCODE themselves!  They are stepping on "our" namespace.
-
-```
-# define       YYERRCODE       256
-```
-
-Besides, what they do is super-weird: they use YYERRCODE is several places
-for their own error tracking.
-
-```
-int    nnsql_yylex(YYSTYPE* pyylval, yyenv_t* penv)
-{
-[...]
-                len = getname(penv->texts_bufptr, -1, penv);
-
-                if( len == YYERRCODE )
-                        return len;
-```
-
-*** avrdude-6.3
-
-Latest version: 
http://svn.savannah.gnu.org/viewvc/avrdude/trunk/avrdude/lexer.l?view=markup
-
-We can certainly talk to them about their use of YYERRCODE.
-
-Replicas on GitHub:
+** bistromathic
+Beware of portability of __attribute__.
 
-https://github.com/tam1035/Phys605-March27/blob/0f856baf20877b6f333f91ed17860bd752c7d68e/AVR/avrdude-6.3/lexer.l
-
-They emit error messages from the scanner and force error recovery.  But
-then, they get two error messages.
-
-```
-c: { yyerror("possible old-style config file entry\n"
-             "  Update your config file (see " CONFIG_DIR
-               "/avrdude.conf.sample for a sample)");
-     return YYERRCODE; }
-```
-
-Unfortunately they also expect the error message at some places.  Here,
-return YYUNDEFTOK (or just return yytext[0]) would have been better.
-
-```
-. { return YYERRCODE; }
-```
-
-*** Casacore  A suite of C++ libraries for radio astronomy data processing.
-
-https://github.com/casacore/casacore/blob/110bf435c3fe292ee0c3e4bdd039853d257c9536/ms/MSSel/MSAntennaGram.ll
-
-```
- /* Any other character is invalid */
-.         { return YYERRCODE; }
-```
-
-A pattern they used several times.
-https://github.com/casacore/casacore/search?q=YYERRCODE&unscoped_q=YYERRCODE
-
-I don't understand how this works: AFAICT, we only define YYERRCODE in
-y.tab.c, not y.tab.h.  That's the case in Apple's Bison 2.3 for instance.
-Flex does not generate it either.
-
-*** Some shell
-Seems to be old versions of busybox.
-
-https://github.com/luotao717/arsdk/blob/9f9004157afcd26b915125576a815f6b3e0cd715/apps/busybox-1.01/shell/msh.c
-
-
-```
-#define        YYERRCODE 300
-```
-
-Used only in one function (collect)
-
-But today the parser is written by hand.
+** YYERRCODE
+Give it another name, it's ugly and conflicts with the way some people have
+used it so far.
 
-https://github.com/mirror/busybox/blob/master/shell/ash.c#L11527
+Possible names:
 
-*** glibc's intl
+- YYERROR_TOKEN, but it's too different from the other tokens, included the
+  special ones (YYEOF, YYUNDEF).
 
-https://sourceware.org/git/?p=glibc.git;a=blob;f=intl/plural.y;h=f69fba7c602e9f890f8e5c3b2cd7fe1c487714ea;hb=HEAD
+- YYerror.  It looks weird, but at least it is correct: that's the name
+  under which the error token appears in the grammar: "error".  Without the
+  'YY' prefix though, granted.
 
-Their yylex returns YYERRCODE, but they don't want any error message.
+yacc.c should `#define YYERRCODE` to that new name in the *.c for sake of the
+projects that used it.  In particular
 
-```
- 379 static void
- 380 yyerror (struct parse_args *arg, const char *str)
- 381 {
- 382   /* Do nothing.  We don't print error messages here.  */
- 383 }
-```
+https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-runtime/intl/plural.y;h=a712255af4f2f739c93336d4ff6556d932a426a5;hb=HEAD
 
-This code was not updated in years.
+should be updated.
 
 ** Java
 *** Examples
-- 
2.26.2




reply via email to

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