bison-patches
[Top][All Lists]
Advanced

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

[PATCH 1/4] style: comment changes in the skeletons


From: Akim Demaille
Subject: [PATCH 1/4] style: comment changes in the skeletons
Date: Sun, 1 Nov 2020 19:33:21 +0100

* data/skeletons/lalr1.cc: Prepare for Java's LAC.
* data/skeletons/lalr1.java: Style fixes.
---
 README-hacking.md               |  8 ++--
 data/skeletons/lalr1.cc         | 12 +++---
 data/skeletons/lalr1.java       | 72 ++++++++++++++++++---------------
 examples/c/bistromathic/parse.y |  6 +--
 4 files changed, 53 insertions(+), 45 deletions(-)

diff --git a/README-hacking.md b/README-hacking.md
index 9c5d9a3e..f0bc4341 100644
--- a/README-hacking.md
+++ b/README-hacking.md
@@ -346,12 +346,14 @@ and [Google Java Style
 Guide](https://google.github.io/styleguide/javaguide.html).  Unfortunately
 at some point some GNU Coding Style was installed in Java, but it's an
 error.  So we should for instance stop putting spaces in function calls.
-Because we are standardizing the code, it is currently inconsistent.
+Because we are standardizing the code, it is currently inconsistent.  Treat
+acronyms as words: `yyLacCheck`, not `yyLACCheck`.
 
 Use a 2-space indentation (Google) rather than 4 (Oracle).
 
-Don't use the "yy" prefix for public members: "getExpectedTokens", not
-"yyexpectedTokens" or "yygetExpectedTokens".
+Don't use the `yy` prefix for public members: `getExpectedTokens`, not
+`yyexpectedTokens` or `yygetExpectedTokens`.  Keep the `yy` prefix though
+for private details.
 
 ## Commit Messages
 Imitate the style we use.  Use `git log` to get sources of inspiration.
diff --git a/data/skeletons/lalr1.cc b/data/skeletons/lalr1.cc
index 5c260d04..c593094a 100644
--- a/data/skeletons/lalr1.cc
+++ b/data/skeletons/lalr1.cc
@@ -20,8 +20,7 @@ m4_include(b4_skeletonsdir/[c++.m4])
 # api.value.type=variant is valid.
 m4_define([b4_value_type_setup_variant])
 
-# Check the value of %define parse.lac, where LAC stands for lookahead
-# correction.
+# parse.lac
 b4_percent_define_default([[parse.lac]], [[none]])
 b4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]])
 b4_define_flag_if([lac])
@@ -935,7 +934,7 @@ b4_dollar_popdef])[]dnl
     if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
       {]b4_lac_if([[
         if (!yy_lac_establish_ (yyla.kind ()))
-           goto yyerrlab;]])[
+          goto yyerrlab;]])[
         goto yydefault;
       }
 
@@ -946,7 +945,7 @@ b4_dollar_popdef])[]dnl
         if (yy_table_value_is_error_ (yyn))
           goto yyerrlab;]b4_lac_if([[
         if (!yy_lac_establish_ (yyla.kind ()))
-           goto yyerrlab;
+          goto yyerrlab;
 ]])[
         yyn = -yyn;
         goto yyreduce;
@@ -1442,7 +1441,9 @@ b4_dollar_popdef])[]dnl
        follows.  If no initial context is currently established for the
        current lookahead, then check if that lookahead can eventually be
        shifted if syntactic actions continue from the current context.  */
-    if (!yy_lac_established_)
+    if (yy_lac_established_)
+      return true;
+    else
       {
 #if ]b4_api_PREFIX[DEBUG
         YYCDEBUG << "LAC: initial context established for "
@@ -1451,7 +1452,6 @@ b4_dollar_popdef])[]dnl
         yy_lac_established_ = true;
         return yy_lac_check_ (yytoken);
       }
-    return true;
   }
 
   // Discard any previous initial lookahead context.
diff --git a/data/skeletons/lalr1.java b/data/skeletons/lalr1.java
index 72bef4c5..c7004535 100644
--- a/data/skeletons/lalr1.java
+++ b/data/skeletons/lalr1.java
@@ -25,7 +25,10 @@ m4_define([b4_symbol_no_destructor_assert],
                               [%destructor does not make sense in Java])])])
 b4_symbol_foreach([b4_symbol_no_destructor_assert])
 
-# Setup some macros for api.push-pull.
+## --------------- ##
+## api.push-pull.  ##
+## --------------- ##
+
 b4_percent_define_default([[api.push-pull]], [[pull]])
 b4_percent_define_check_values([[[[api.push-pull]],
                                  [[pull]], [[push]], [[both]]]])
@@ -52,7 +55,8 @@ b4_use_push_for_pull_if([
 # Define a macro to encapsulate the parse state variables.  This
 # allows them to be defined either in parse() when doing pull parsing,
 # or as class instance variable when doing push parsing.
-m4_define([b4_define_state],[[
+m4_define([b4_define_state],
+[[
     /* Lookahead token kind.  */
     int yychar = YYEMPTY_;
     /* Lookahead symbol kind.  */
@@ -76,6 +80,10 @@ m4_define([b4_define_state],[[
     ]b4_yystype[ yylval = null;
 ]])[
 
+## ------------- ##
+## Parser File.  ##
+## ------------- ##
+
 ]b4_output_begin([b4_parser_file_name])[
 ]b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java],
               [2007-2015, 2018-2020])[
@@ -343,65 +351,63 @@ import java.text.MessageFormat;
     public int size = 16;
     public int height = -1;
 
-    public final void push (int state, ]b4_yystype[ value]b4_locations_if([, 
]b4_location_type[ loc])[) {
+    public final void push(int state, ]b4_yystype[ value]b4_locations_if([, 
]b4_location_type[ loc])[) {
       height++;
-      if (size == height)
-        {
-          int[] newStateStack = new int[size * 2];
-          System.arraycopy (stateStack, 0, newStateStack, 0, height);
-          stateStack = newStateStack;]b4_locations_if([[
-          ]b4_location_type[[] newLocStack = new ]b4_location_type[[size * 2];
-          System.arraycopy (locStack, 0, newLocStack, 0, height);
-          locStack = newLocStack;]])
-
-          b4_yystype[[] newValueStack = new ]b4_yystype[[size * 2];
-          System.arraycopy (valueStack, 0, newValueStack, 0, height);
-          valueStack = newValueStack;
-
-          size *= 2;
-        }
+      if (size == height) {
+        int[] newStateStack = new int[size * 2];
+        System.arraycopy(stateStack, 0, newStateStack, 0, height);
+        stateStack = newStateStack;]b4_locations_if([[
+        ]b4_location_type[[] newLocStack = new ]b4_location_type[[size * 2];
+        System.arraycopy(locStack, 0, newLocStack, 0, height);
+        locStack = newLocStack;]])
+
+        b4_yystype[[] newValueStack = new ]b4_yystype[[size * 2];
+        System.arraycopy(valueStack, 0, newValueStack, 0, height);
+        valueStack = newValueStack;
+
+        size *= 2;
+      }
 
       stateStack[height] = state;]b4_locations_if([[
       locStack[height] = loc;]])[
       valueStack[height] = value;
     }
 
-    public final void pop () {
-      pop (1);
+    public final void pop() {
+      pop(1);
     }
 
-    public final void pop (int num) {
+    public final void pop(int num) {
       // Avoid memory leaks... garbage collection is a white lie!
       if (0 < num) {
-        java.util.Arrays.fill (valueStack, height - num + 1, height + 1, 
null);]b4_locations_if([[
-        java.util.Arrays.fill (locStack, height - num + 1, height + 1, 
null);]])[
+        java.util.Arrays.fill(valueStack, height - num + 1, height + 1, 
null);]b4_locations_if([[
+        java.util.Arrays.fill(locStack, height - num + 1, height + 1, 
null);]])[
       }
       height -= num;
     }
 
-    public final int stateAt (int i) {
+    public final int stateAt(int i) {
       return stateStack[height - i];
     }
 ]b4_locations_if([[
 
-    public final ]b4_location_type[ locationAt (int i) {
+    public final ]b4_location_type[ locationAt(int i) {
       return locStack[height - i];
     }
 ]])[
-    public final ]b4_yystype[ valueAt (int i) {
+    public final ]b4_yystype[ valueAt(int i) {
       return valueStack[height - i];
     }
 
     // Print the state stack on the debug stream.
-    public void print (java.io.PrintStream out) {
+    public void print(java.io.PrintStream out) {
       out.print ("Stack now");
 
-      for (int i = 0; i <= height; i++)
-        {
-          out.print (' ');
-          out.print (stateStack[i]);
-        }
-      out.println ();
+      for (int i = 0; i <= height; i++) {
+        out.print(' ');
+        out.print(stateStack[i]);
+      }
+      out.println();
     }
   }
 
diff --git a/examples/c/bistromathic/parse.y b/examples/c/bistromathic/parse.y
index 718ec904..25c2c5ec 100644
--- a/examples/c/bistromathic/parse.y
+++ b/examples/c/bistromathic/parse.y
@@ -117,13 +117,13 @@
 // with TOK_ (e.g., TOK_EOF).
 %define api.token.prefix {TOK_}
 
-// Customized syntax error messages (see yyreport_syntax_error).
+// Customized syntax error messages (see yyreport_syntax_error)...
 %define parse.error custom
 
-// with locations.
+// ... with locations...
 %locations
 
-// and accurate list of expected tokens.
+// ... and accurate list of expected tokens.
 %define parse.lac full
 
 // Generate the parser description file (calc.output).
-- 
2.28.0




reply via email to

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