[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
[PATCH 4/4] java: lac: check it, Akim Demaille, 2020/11/01