[svn] r6550: nemerle/trunk/ncc/parsing/PreParser.n

nazgul svnadmin at nemerle.org
Fri Aug 18 00:26:00 CEST 2006


Log:
Do not erase empty loose groups when they are closed by separator

Author: nazgul
Date: Fri Aug 18 00:25:58 2006
New Revision: 6550

Modified:
   nemerle/trunk/ncc/parsing/PreParser.n

Modified: nemerle/trunk/ncc/parsing/PreParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/PreParser.n	(original)
+++ nemerle/trunk/ncc/parsing/PreParser.n	Fri Aug 18 00:25:58 2006
@@ -152,13 +152,19 @@
       parent_group
     }
 
+    
     /** Closes currently created LooseGroup and adds it at the end of the
         parent group. After that we are ready to make another LooseGroup.
 
         It is called mainly when separator token occurs.
      */   
-    finish_current (current_begin : int) : void {
-      unless (current_begin == current_stream.Count) {
+    finish_current (current_begin : int, separator_token : Token = null) : void {
+      if (current_begin == current_stream.Count)
+        when (separator_token != null) {
+          def loose = Token.LooseGroup (separator_token.Location, separator_token);
+          parent_stream.Add (loose);
+        }
+      else {
         def loose_group = make_list (current_stream, current_begin);
         def loose = Token.LooseGroup (loose_group.Location, loose_group);
         parent_stream.Add (loose);
@@ -261,7 +267,7 @@
 
           // finish current loose group
           | Token.Comma =>
-            finish_current (current_begin);
+            finish_current (current_begin, tok);
             loop ()
 
           | _ => handle_default_token (current_begin, tok, false); loop ()
@@ -290,7 +296,7 @@
             Token.SquareGroup (loc + tok.Location, group);
 
           // finish current loose group
-          | Token.Comma => finish_current (current_begin); loop ()
+          | Token.Comma => finish_current (current_begin, tok); loop ()
 
           | _ => handle_default_token (current_begin, tok, false); loop ()
         }



More information about the svn mailing list