bison-patches
[Top][All Lists]
Advanced

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

[PATCH 1/4] d: put internal details inside the parser


From: Akim Demaille
Subject: [PATCH 1/4] d: put internal details inside the parser
Date: Sun, 23 Jun 2019 19:31:00 +0200

Avoid name clashes, etc.

* data/skeletons/lalr1.d (YYStackElement, YYStack): Move inside the
parser.
---
 data/skeletons/lalr1.d | 116 +++++++++++++++++++++--------------------
 1 file changed, 59 insertions(+), 57 deletions(-)

diff --git a/data/skeletons/lalr1.d b/data/skeletons/lalr1.d
index 4c00349d..cb525196 100644
--- a/data/skeletons/lalr1.d
+++ b/data/skeletons/lalr1.d
@@ -80,60 +80,6 @@ public interface Lexer
    void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[string s);
 }
 
-private final struct YYStackElement{
-  int state;
-  ]b4_yystype[ value;]b4_locations_if(
-  b4_location_type[[] location;])[
-}
-
-private final struct YYStack {
-  private YYStackElement[] stack = [];
-
-  public final @@property ulong height()
-  {
-    return stack.length;
-  }
-
-  public final void push (int state, ]b4_yystype[ value]dnl
-b4_locations_if([, ref ]b4_location_type[ loc])[)
-  {
-    stack ~= YYStackElement(state, value]b4_locations_if([, loc])[);
-  }
-
-  public final void pop ()
-  {
-    pop (1);
-  }
-
-  public final void pop (int num)
-  {
-    stack.length -= num;
-  }
-
-  public final int stateAt (int i)
-  {
-    return stack[$-i-1].state;
-  }
-
-  ]b4_locations_if([[public final ref ]b4_location_type[ locationAt (int i)
-  {
-    return stack[$-i-1].location;
-  }
-
-  ]])[public final ref ]b4_yystype[ valueAt (int i)
-  {
-    return stack[$-i-1].value;
-  }
-]b4_parse_trace_if([[
-  // Print the state stack on the debug stream.
-  public final void print (File stream)
-  {
-    stream.write ("Stack now");
-    for (int i = 0; i < stack.length; i++)
-      stream.write (" ", stack[i].state);
-    stream.writeln ();
-  }]])[
-}
 ]b4_locations_if(b4_position_type_if([[[
 static assert(__traits(compiles,
               (new ]b4_position_type[[1])[0]=(new ]b4_position_type[[1])[0]),
@@ -314,6 +260,7 @@ b4_user_union_members
   private final int yylex () {
     return yylexer.yylex ();
   }
+
   protected final void yyerror (]b4_locations_if(ref [b4_location_type[ loc, 
]])[string s) {
     yylexer.yyerror (]b4_locations_if([loc, ])[s);
   }
@@ -889,9 +836,64 @@ m4_popdef([b4_at_dollar])])dnl
   private static immutable int yyuser_token_number_max_ = 
]b4_user_token_number_max[;
   private static immutable int yyundef_token_ = ]b4_undef_token_number[;
 
-]/* User implementation code.  */
-b4_percent_code_get[]dnl
+  private final struct YYStackElement {
+    int state;
+    ]b4_yystype[ value;]b4_locations_if(
+    b4_location_type[[] location;])[
+  }
+
+  private final struct YYStack {
+    private YYStackElement[] stack = [];
+
+    public final @@property ulong height()
+    {
+      return stack.length;
+    }
+
+    public final void push (int state, ]b4_yystype[ value]dnl
+  b4_locations_if([, ref ]b4_location_type[ loc])[)
+    {
+      stack ~= YYStackElement(state, value]b4_locations_if([, loc])[);
+    }
+
+    public final void pop ()
+    {
+      pop (1);
+    }
+
+    public final void pop (int num)
+    {
+      stack.length -= num;
+    }
+
+    public final int stateAt (int i)
+    {
+      return stack[$-i-1].state;
+    }
+
+]b4_locations_if([[
+    public final ref ]b4_location_type[ locationAt (int i)
+    {
+      return stack[$-i-1].location;
+    }]])[
+
+    public final ref ]b4_yystype[ valueAt (int i)
+    {
+      return stack[$-i-1].value;
+    }
+]b4_parse_trace_if([[
+    // Print the state stack on the debug stream.
+    public final void print (File stream)
+    {
+      stream.write ("Stack now");
+      for (int i = 0; i < stack.length; i++)
+        stream.write (" ", stack[i].state);
+      stream.writeln ();
+    }]])[
+  }
 
+  /* User implementation code.  */
+]b4_percent_code_get[
 }
-b4_epilogue[]dnl
+]b4_epilogue[]dnl
 b4_output_end
-- 
2.21.0




reply via email to

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