summaryrefslogtreecommitdiff
path: root/MLKDynamicContext.m
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-06-19 21:16:13 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-06-19 21:16:13 +0200
commit85762b55bf85437e981ebbf162e9af2255236330 (patch)
tree2e37cd8847c78b36d42d9e3f9931b039f7c7de3a /MLKDynamicContext.m
parent66ed696a14623f3062f28ede477ec73049e69321 (diff)
Make the list reader work for simple lists.
Diffstat (limited to 'MLKDynamicContext.m')
-rw-r--r--MLKDynamicContext.m20
1 files changed, 12 insertions, 8 deletions
diff --git a/MLKDynamicContext.m b/MLKDynamicContext.m
index 6d135a4..92b2384 100644
--- a/MLKDynamicContext.m
+++ b/MLKDynamicContext.m
@@ -28,6 +28,7 @@
#import "MLKEnvironment.h"
#import "MLKLinkedList.h"
#import "MLKPackage.h"
+#import "MLKParenReader.h"
#import "MLKReadtable.h"
#import "MLKSymbol.h"
#import "MLKInteger.h"
@@ -110,14 +111,14 @@ static MLKDynamicContext *global_context;
[readtable setSyntaxType:CONSTITUENT forCharacter:'-'];
[readtable setConstituentTrait:MINUS_SIGN forCharacter:'-'];
[readtable setConstituentTrait:SIGN forCharacter:'-'];
-
+
[readtable setSyntaxType:CONSTITUENT forCharacter:'.'];
[readtable setConstituentTrait:DOT forCharacter:'.'];
[readtable setConstituentTrait:DECIMAL_POINT forCharacter:'.'];
-
+
[readtable setSyntaxType:CONSTITUENT forCharacter:'/'];
[readtable setConstituentTrait:RATIO_MARKER forCharacter:'/'];
-
+
// Maybe distinguish different types of exponent markers as the CLHS
// does? For now, the MLKFloat class cluster's string-parsing
// constructor does the discrimination.
@@ -131,7 +132,7 @@ static MLKDynamicContext *global_context;
[readtable setConstituentTrait:EXPONENT_MARKER forCharacter:'F'];
[readtable setConstituentTrait:EXPONENT_MARKER forCharacter:'L'];
[readtable setConstituentTrait:EXPONENT_MARKER forCharacter:'S'];
-
+
[readtable setConstituentTrait:NUMBER_MARKER forCharacter:'d'];
[readtable setConstituentTrait:NUMBER_MARKER forCharacter:'e'];
[readtable setConstituentTrait:NUMBER_MARKER forCharacter:'f'];
@@ -144,17 +145,20 @@ static MLKDynamicContext *global_context;
[readtable setConstituentTrait:NUMBER_MARKER forCharacter:'S'];
[readtable setSyntaxType:MULTI_ESCAPE forCharacter:'|'];
-
+
// [readtable setSyntaxType:TERMINATING_MACRO forCharacter:';'];
// [readtable setSyntaxType:TERMINATING_MACRO forCharacter:'"'];
// [readtable setSyntaxType:NONTERMINATING_MACRO forCharacter:'#'];
// [readtable setSyntaxType:TERMINATING_MACRO forCharacter:'\''];
- // [readtable setSyntaxType:TERMINATING_MACRO forCharacter:'('];
// [readtable setSyntaxType:TERMINATING_MACRO forCharacter:'`'];
- // [readtable setSyntaxType:TERMINATING_MACRO forCharacter:')'];
// [readtable setSyntaxType:TERMINATING_MACRO forCharacter:','];
[readtable setSyntaxType:SINGLE_ESCAPE forCharacter:'\\'];
+
+ [readtable setSyntaxType:TERMINATING_MACRO forCharacter:'('];
+ [readtable setMacroFunction:[[MLKParenReader alloc] init]
+ forCharacter:'('];
+ [readtable setSyntaxType:TERMINATING_MACRO forCharacter:')'];
for (ch = '0'; ch <= '9'; ch++)
{
@@ -162,7 +166,7 @@ static MLKDynamicContext *global_context;
[readtable setConstituentTrait:ALPHA_DIGIT forCharacter:ch];
[readtable unsetConstituentTrait:ALPHABETIC forCharacter:ch];
}
-
+
for (ch = 'A'; ch <= 'Z'; ch++)
{
[readtable setSyntaxType:CONSTITUENT forCharacter:ch];