summaryrefslogtreecommitdiff
path: root/MLKReader.m
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-07-26 11:48:01 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-07-26 11:48:01 +0200
commitca1c83c21c967593dfa4fced6084e83361bc6cf3 (patch)
tree15b770bc901ef01ea4568b08026a120eb00be63d /MLKReader.m
parent9f9d3bcede3a4d57fb112011be7023fdd83db369 (diff)
Reader: Support the consing dot.
Diffstat (limited to 'MLKReader.m')
-rw-r--r--MLKReader.m25
1 files changed, 25 insertions, 0 deletions
diff --git a/MLKReader.m b/MLKReader.m
index 7343c64..7db9670 100644
--- a/MLKReader.m
+++ b/MLKReader.m
@@ -45,6 +45,21 @@
recursive:(BOOL)recursive
preserveWhitespace:(BOOL)preserveWhitespace
{
+ return [self readFromStream:stream
+ eofError:eofError
+ eofValue:eofValue
+ recursive:recursive
+ preserveWhitespace:preserveWhitespace
+ singleDotMarker:nil];
+}
+
++(id) readFromStream:(MLKStream *)stream
+ eofError:(BOOL)eofError
+ eofValue:(id)eofValue
+ recursive:(BOOL)recursive
+ preserveWhitespace:(BOOL)preserveWhitespace
+ singleDotMarker:(id)dotMarker
+{
unichar ch;
NSMutableString *token;
MLKReadtable *readtable;
@@ -169,6 +184,16 @@
}
//NSLog (@"--> Interpret token: %@", token);
+
+ if ([token isEqualToString:@"."])
+ {
+ if (dotMarker)
+ return dotMarker;
+ else
+ [NSException raise:@"MLKReaderError"
+ format:@"Unexpectedly read a single dot."];
+ }
+
return [self interpretToken:token
readtable:readtable
escaped:ever_escaped];