update
authorClaus Gittinger <cg@exept.de>
Tue, 04 Mar 2014 15:34:10 +0100
changeset 186 8fc35b70c3b9
parent 185 e094104de2e5
child 187 7532226d6389
update
PPComposedTest.st
--- a/PPComposedTest.st	Tue Mar 04 15:34:09 2014 +0100
+++ b/PPComposedTest.st	Tue Mar 04 15:34:10 2014 +0100
@@ -1,6 +1,6 @@
 "{ Package: 'stx:goodies/petitparser' }"
 
-PPAbstractParseTest subclass:#PPComposedTest
+PPAbstractParserTest subclass:#PPComposedTest
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -25,17 +25,15 @@
 !PPComposedTest methodsFor:'testing'!
 
 testDoubledString
-        | parser |
-        parser := ($' asParser , (($' asParser , $' asParser) / $' asParser negate) star flatten , $' asParser) 
-                ==> [ :nodes | nodes second copyReplaceAll: '''''' with: '''' ].
+	| parser |
+	parser := ($' asParser , (($' asParser , $' asParser) / $' asParser negate) star flatten , $' asParser) 
+		==> [ :nodes | nodes second copyReplaceAll: '''''' with: '''' ].
 
-        self assert: parser parse: '''''' to: ''.
-        self assert: parser parse: '''a''' to: 'a'.
-        self assert: parser parse: '''ab''' to: 'ab'.
-        self assert: parser parse: '''a''''b''' to: 'a''b'.
-        self assert: parser parse: '''a''''''''b''' to: 'a''''b'
-
-    "Modified: / 18-12-2010 / 18:00:16 / Jan Kurs <kurs.jan@post.cz>"
+	self assert: parser parse: '''''' to: ''.
+	self assert: parser parse: '''a''' to: 'a'.
+	self assert: parser parse: '''ab''' to: 'ab'.
+	self assert: parser parse: '''a''''b''' to: 'a''b'.
+	self assert: parser parse: '''a''''''''b''' to: 'a''''b'
 !
 
 testEvenNumber
@@ -74,13 +72,13 @@
 	"S ::= if C then S else S | if C then S | X"
 
 	| start if then else cond expr parser |
-	start := PPUnresolvedParser new.
+	start := PPDelegateParser new.
 	if := 'if' asParser token trim.
 	then := 'then' asParser token trim.
 	else := 'else' asParser token trim.
 	cond := 'C' asParser token trim.
 	expr := 'X' asParser token trim.
-	start def: (if , cond , then , start , else , start) / (if , cond , then , start) / expr.
+	start setParser: (if , cond , then , start , else , start) / (if , cond , then , start) / expr.
 	parser := start end.
 	self assert: parser parse: 'X'.
 	self assert: parser parse: 'if C then X'.
@@ -98,8 +96,8 @@
 	"S ::= S 'x' S / '1'"
 	
 	| parser |
-	parser := PPUnresolvedParser new.
-	parser def: ((parser , $x asParser , parser) / $1 asParser) memoized flatten.
+	parser := PPDelegateParser new.
+	parser setParser: ((parser , $x asParser , parser) / $1 asParser) memoized flatten.
 
 	self assert: parser parse: '1' to: '1'.
 	self assert: parser parse: '1x1' to: '1x1'.
@@ -113,8 +111,8 @@
 	"S ::= S , number | number"
 	
 	| number list parser |
-	number := #digit asParser plus token trim
-		==> [ :node | node value asInteger ].
+	number := #digit asParser plus flatten trim
+		==> [ :node | node asInteger ].
 	list := (number separatedBy: $, asParser token trim)
 		==> [ :node | node select: [ :each | each isInteger ] ].
 	parser := list end.
@@ -144,24 +142,24 @@
 !
 
 testNestedComments
-        "C ::= B I* E"
-        "I ::= !!E (C | T)"
-        "B ::= /*"
-        "E ::= */"
-        "T ::= ."
-        
-        | begin end any inside parser |
-        begin := '/*' asParser.
-        end := '*/' asParser.
-        any := #any asParser.
-        
-        parser := PPUnresolvedParser new.
-        inside := end not , (parser / any).
-        parser def: begin , inside star , end.
-        
-        self assert: parser parse: '/*ab*/cd' end: 6.
-        self assert: parser parse: '/*a/*b*/c*/'.
-        self assert: parser fail: '/*a/*b*/c'
+	"C ::= B I* E"
+	"I ::= !!E (C | T)"
+	"B ::= /*"
+	"E ::= */"
+	"T ::= ."
+	
+	| begin end any inside parser |
+	begin := '/*' asParser.
+	end := '*/' asParser.
+	any := #any asParser.
+	
+	parser := PPDelegateParser new.
+	inside := end not , (parser / any).
+	parser setParser: begin , inside star , end.
+	
+	self assert: parser parse: '/*ab*/cd' end: 6.
+	self assert: parser parse: '/*a/*b*/c*/'.
+	self assert: parser fail: '/*a/*b*/c'
 !
 
 testPalindrome
@@ -169,12 +167,12 @@
 	 S1 ::= S0 | epsilon"
 	
 	| s0 s1 parser |
-	s0 := PPUnresolvedParser new.
-	s1 := PPUnresolvedParser new.
-	s0 def: ($a asParser , s1 , $a asParser)
+	s0 := PPDelegateParser new.
+	s1 := PPDelegateParser new.
+	s0 setParser: ($a asParser , s1 , $a asParser)
 		/ ($b asParser , s1 , $b asParser)
 		/ ($c asParser , s1 , $c asParser).	
-	s1 def: s0 / nil asParser.
+	s1 setParser: s0 / nil asParser.
 	parser := s0 flatten end.
 
 	self assert: parser parse: 'aa' to: 'aa'.
@@ -199,10 +197,10 @@
 	 S1 ::= S0 | epsilon"
 	
 	| s0 s1 parser |
-	s0 := PPUnresolvedParser new.
-	s1 := PPUnresolvedParser new.
-	s0 def: $a asParser , s1 , $b asParser.
-	s1 def: s0 / nil asParser.
+	s0 := PPDelegateParser new.
+	s1 := PPDelegateParser new.
+	s0 setParser: $a asParser , s1 , $b asParser.
+	s1 setParser: s0 / nil asParser.
 	parser := s0 flatten.
 
 	self assert: parser parse: 'ab' to: 'ab'.
@@ -225,9 +223,9 @@
 	"S ::= a a S | epsilon"
 	
 	| s0 s1 parser |
-	s0 := PPUnresolvedParser new.
+	s0 := PPDelegateParser new.
 	s1 := $a asParser , $a asParser , s0.
-	s0 def: s1 / nil asParser.
+	s0 setParser: s1 / nil asParser.
 	parser := s0 flatten.
 
 	self assert: parser parse: '' to: ''.
@@ -302,17 +300,17 @@
 	BC <- 'b' BC 'c' / epsilon"
 	
 	| s p1 ab p2 bc |
-	s := PPUnresolvedParser new.
-	p1 := PPUnresolvedParser new.
-	ab := PPUnresolvedParser new.
-	p2 := PPUnresolvedParser new.
-	bc := PPUnresolvedParser new.
+	s := PPDelegateParser new.
+	p1 := PPDelegateParser new.
+	ab := PPDelegateParser new.
+	p2 := PPDelegateParser new.
+	bc := PPDelegateParser new.
 	
-	s def: (p1 and , p2 end) flatten.
-	p1 def: ab , $c asParser.
-	ab def: ($a asParser , ab , $b asParser) optional.
-	p2 def: $a asParser star , bc.
-	bc def: ($b asParser , bc , $c asParser) optional.
+	s setParser: (p1 and , p2 end) flatten.
+	p1 setParser: ab , $c asParser.
+	ab setParser: ($a asParser , ab , $b asParser) optional.
+	p2 setParser: $a asParser star , bc.
+	bc setParser: ($b asParser , bc , $c asParser) optional.
 	
 	self assert: s parse: 'abc' to: 'abc'.
 	self assert: s parse: 'aabbcc' to: 'aabbcc'.
@@ -388,10 +386,10 @@
 
 testReturn
 	| number spaces return |
-	number := #digit asParser plus token.
+	number := #digit asParser plus flatten.
 	spaces := #space asParser star.
 	return := (spaces , $^ asParser token , spaces , number)
-		==> [ :nodes | Array with: #return with: (nodes at: 4) value ].
+		==> [ :nodes | Array with: #return with: (nodes at: 4) ].
 
 	self assert: return parse: '^1' to: #(return '1').
 	self assert: return parse: '^12' to: #(return '12').
@@ -405,13 +403,14 @@
 !PPComposedTest class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPComposedTest.st,v 1.4 2012-12-01 15:10:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPComposedTest.st,v 1.5 2014-03-04 14:34:10 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPComposedTest.st,v 1.4 2012-12-01 15:10:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPComposedTest.st,v 1.5 2014-03-04 14:34:10 cg Exp $'
 !
 
 version_SVN
-    ^ '§Id: PPComposedTest.st 4 2010-12-18 17:02:23Z kursjan §'
+    ^ '$Id: PPComposedTest.st,v 1.5 2014-03-04 14:34:10 cg Exp $'
 ! !
+