[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