compiler/tests/PPCTokenizingCodeGeneratorTest.st
changeset 515 b5316ef15274
parent 464 f6d77fee9811
child 524 f6f68d32de73
--- a/compiler/tests/PPCTokenizingCodeGeneratorTest.st	Fri Jul 24 15:06:54 2015 +0100
+++ b/compiler/tests/PPCTokenizingCodeGeneratorTest.st	Mon Aug 17 12:13:16 2015 +0100
@@ -12,21 +12,35 @@
 
 !PPCTokenizingCodeGeneratorTest methodsFor:'setup'!
 
+cleanClass
+    | parserClass scannerClass |
+    parserClass := (Smalltalk at: arguments parserName ifAbsent: [nil]).
+    parserClass notNil ifTrue:[ 
+        parserClass removeFromSystem
+    ].
+
+    scannerClass := (Smalltalk at: arguments scannerName ifAbsent: [nil]).
+    scannerClass notNil ifTrue:[ 
+        scannerClass removeFromSystem
+    ].
+!
+
 compileTokenizer: aNode
     tokenizer := visitor visit: aNode	
 !
 
 compileTree: root
         
-    | configuration |
+    | configuration  |
 
     configuration := PPCPluggableConfiguration on: [ :_self | 
-        result := (visitor visit: _self ir).
-        compiler compileParser startSymbol: result methodName.
-        parser := compiler compileParser new.
-        _self ir: parser
+        _self cacheFirstFollow.
+        _self generateScanner.
+        _self generate.
+        
     ].
     configuration arguments: arguments.
+    configuration base: PPCConfiguration tokenizing.
     parser := configuration compile: root.
     
 !
@@ -43,8 +57,10 @@
     arguments := PPCArguments default
         profile: true;
         yourself.	
-            
-    compiler := PPCTokenizingCompiler new.
+
+    self cleanClass.
+    
+    compiler := PPCTokenizingCodeGen new.
     compiler arguments: arguments.
     
     visitor := PPCTokenizingCodeGenerator new.
@@ -53,12 +69,7 @@
 !
 
 tearDown
-    | class |
-
-    class := (Smalltalk at: #PPGeneratedParser ifAbsent: [nil]).
-    class notNil ifTrue:[ 
-        class removeFromSystem
-    ].
+    "nothing to do now"
 ! !
 
 !PPCTokenizingCodeGeneratorTest methodsFor:'support'!
@@ -138,7 +149,7 @@
 !PPCTokenizingCodeGeneratorTest methodsFor:'testing'!
 
 testSimpleChoice1
-    | token1 token2 token1Consume token2Consume  tokenizerNode eof choiceNode wsNode |
+    | token1 token2 token1Consume token2Consume  tokenNode eof choiceNode wsNode |
 
     token1 := (self tokenNodeForLiteral: 'foo') yourself.
     token2 := (self tokenNodeForLiteral: 'bar') yourself.
@@ -155,28 +166,33 @@
         children: { token1Consume . token2Consume };
         yourself.
         
-    tokenizerNode := PPCTokenChoiceNode new
+    tokenNode := PPCListNode new
         children: { token1 . token2 . eof };
         name: 'nextToken';
         yourself.
         
     wsNode := PPCTokenStarSeparatorNode new
         name: 'consumeWhitespace';
+        child: PPCNilNode new;
+        yourself.
+        
+    node := PPCTokenizingParserNode new
+        tokens: tokenNode;
+        whitespace: wsNode;
+        parser: choiceNode;
         yourself.
     
-    self compileWs: wsNode.
-    self compileTokenizer: tokenizerNode.
-    self compileTree: choiceNode.
+    self compileTree: node.
     
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser parse: 'foo'.
     self assert: result inputValue = 'foo'.
 
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser parse: 'bar'.
     self assert: result inputValue = 'bar'.
 
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser fail: 'baz'.	
 !
 
@@ -185,7 +201,7 @@
     tokenNode := (self tokenNodeForLiteral: 'bar') yourself.
     eof := (self tokenNodeForEOF) yourself.	
         
-    tokenizerNode := PPCTokenChoiceNode new
+    tokenizerNode := PPCListNode new
         children: { tokenNode . eof };
         name: 'nextToken';
         yourself.
@@ -199,23 +215,23 @@
     
     node := PPCTokenizingParserNode new
         parser: consumeNode;
-        tokenizer: tokenizerNode;
+        tokens: tokenizerNode;
         whitespace: wsNode;
         yourself.
 
     
     self compileTree: node.
     
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser parse: 'bar'.
     self assert: result inputValue = 'bar'.
 
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser fail: 'foo'.
 !
 
 testTrimmingToken1
-    | token tokenConsume tokenizerNode eof  wsNode |
+    | token tokenConsume tokensNode eof  wsNode |
 
     token := self trimmingTokenNode: (self literalNode: 'foo').
     eof := (self tokenNodeForEOF) yourself.
@@ -224,31 +240,37 @@
                             child: token;
                             yourself.
 
-    tokenizerNode := PPCTokenChoiceNode new
+    tokensNode := PPCListNode new
         children: { token . eof };
         name: 'nextToken';
         yourself.
     
     wsNode := PPCTokenStarSeparatorNode new
         name: 'consumeWhitespace';
+        child: PPCNilNode new;
+        yourself.
+
+    node := PPCTokenizingParserNode new
+        tokens: tokensNode;
+        whitespace: wsNode;
+        parser: tokenConsume;
         yourself.
     
-    self compileWs: wsNode.
-    self compileTokenizer: tokenizerNode.
-    self compileTree: tokenConsume.
+    
+    self compileTree: node.
 
     
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser parse: ' foo'.
     self assert: result inputValue = 'foo'.
 
     
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser parse: ' foo  '.
     self assert: result inputValue = 'foo'.
 
 
-    parser := compiler compiledParser new.
+    parser := parser class new.
     self assert: parser fail: 'baz'.	
 ! !