PPComposedTest.st
changeset 14 d72aa40bcf53
parent 4 90de244a7fa2
child 96 b3a69699d996
--- a/PPComposedTest.st	Fri May 04 23:59:27 2012 +0200
+++ b/PPComposedTest.st	Fri May 04 23:59:40 2012 +0200
@@ -25,22 +25,22 @@
 !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'
+        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>"
 !
 
 testEvenNumber
 	"Create a grammar that parses an even number of a's and b's."
-
+	
 	| a as b bs s |
 	a := $a asParser ==> [ :char | as := as + 1 ].
 	b := $b asParser ==> [ :char | bs := bs + 1 ].
@@ -58,7 +58,7 @@
 	self assert: s fail: 'bbb' end: 3.
 	self assert: s fail: 'aab' end: 3.
 	self assert: s fail: 'abb' end: 3.
-
+	
 	self assert: s parse: ''.
 	self assert: s parse: 'aa'.
 	self assert: s parse: 'bb'.
@@ -96,7 +96,7 @@
 
 testLeftRecursion
 	"S ::= S 'x' S / '1'"
-
+	
 	| parser |
 	parser := PPUnresolvedParser new.
 	parser def: ((parser , $x asParser , parser) / $1 asParser) memoized flatten.
@@ -111,7 +111,7 @@
 
 testListOfIntegers
 	"S ::= S , number | number"
-
+	
 	| number list parser |
 	number := #digit asParser plus token trim
 		==> [ :node | node value asInteger ].
@@ -136,7 +136,7 @@
 	self assert: parser parse: '1 ,2 ,3' to: (1 to: 3) asArray.
 	self assert: parser parse: '1 ,2 ,3 ,4' to: (1 to: 4) asArray.
 	self assert: parser parse: '1 ,2 ,3 ,4 ,5' to: (1 to: 5) asArray.
-
+	
 	self assert: parser fail: ''.
 	self assert: parser fail: ','.
 	self assert: parser fail: '1,'.
@@ -149,16 +149,16 @@
 	"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'
@@ -167,20 +167,20 @@
 testPalindrome
 	"S0 ::= a S1 a | b S1 b | ...
 	 S1 ::= S0 | epsilon"
-
+	
 	| s0 s1 parser |
 	s0 := PPUnresolvedParser new.
 	s1 := PPUnresolvedParser new.
 	s0 def: ($a asParser , s1 , $a asParser)
 		/ ($b asParser , s1 , $b asParser)
-		/ ($c asParser , s1 , $c asParser).
+		/ ($c asParser , s1 , $c asParser).	
 	s1 def: s0 / nil asParser.
 	parser := s0 flatten end.
 
 	self assert: parser parse: 'aa' to: 'aa'.
 	self assert: parser parse: 'bb' to: 'bb'.
 	self assert: parser parse: 'cc' to: 'cc'.
-
+	
 	self assert: parser parse: 'abba' to: 'abba'.
 	self assert: parser parse: 'baab' to: 'baab'.
 
@@ -197,7 +197,7 @@
 testParseAaaBbb
 	"S0 ::= a S1 b
 	 S1 ::= S0 | epsilon"
-
+	
 	| s0 s1 parser |
 	s0 := PPUnresolvedParser new.
 	s1 := PPUnresolvedParser new.
@@ -223,7 +223,7 @@
 
 testParseAaaaaa
 	"S ::= a a S | epsilon"
-
+	
 	| s0 s1 parser |
 	s0 := PPUnresolvedParser new.
 	s1 := $a asParser , $a asParser , s0.
@@ -243,7 +243,7 @@
 
 testParseAbAbAb
 	"S ::= (A B)+"
-
+	
 	| parser |
 	parser := ($a asParser , $b asParser) plus flatten.
 
@@ -256,7 +256,7 @@
 	self assert: parser parse: 'ababa' to: 'abab' end: 4.
 	self assert: parser parse: 'abababb' to: 'ababab' end: 6.
 	self assert: parser parse: 'ababababa' to: 'abababab' end: 8.
-
+	
 	self assert: parser fail: ''.
 	self assert: parser fail: 'a'.
 	self assert: parser fail: 'bab'
@@ -285,35 +285,35 @@
 	self assert: parser parse: 'bc' to: 'b' end: 1.
 	self assert: parser parse: 'abc' to: 'ab' end: 2.
 	self assert: parser parse: 'bac' to: 'ba' end: 2.
-
+	
 	self assert: parser fail: ''.
 	self assert: parser fail: 'c'
 !
 
 testParseAnBnCn
-	"PEGs for a non context- free language:
-
+	"PEGs for a non context- free language: 
+		
 		a^n , b^n , c^n
-
-	S <- &P1 P2
-	P1 <- AB 'c'
+		
+	S <- &P1 P2 
+	P1 <- AB 'c' 
 	AB <- 'a' AB 'b' / epsilon
 	P2 <- 'a'* BC end
 	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 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.
-
+	
 	self assert: s parse: 'abc' to: 'abc'.
 	self assert: s parse: 'aabbcc' to: 'aabbcc'.
 	self assert: s parse: 'aaabbbccc' to: 'aaabbbccc'.
@@ -374,12 +374,12 @@
 	self assert: self number parse: '12-' to: '12' end: 2.
 	self assert: self number parse: '12.3.' to: '12.3' end: 4.
 	self assert: self number parse: '12.34.' to: '12.34' end: 5.
-
+	
 	self assert: self number parse: '-1' to: '-1'.
 	self assert: self number parse: '-12' to: '-12'.
 	self assert: self number parse: '-12.3' to: '-12.3'.
 	self assert: self number parse: '-12.34' to: '-12.34'.
-
+	
 	self assert: self number fail: ''.
 	self assert: self number fail: '-'.
 	self assert: self number fail: '.'.
@@ -397,13 +397,21 @@
 	self assert: return parse: '^12' to: #(return '12').
 	self assert: return parse: '^ 123' to: #(return '123').
 	self assert: return parse: '^  1234' to: #(return '1234').
-
+	
 	self assert: return fail: '1'.
 	self assert: return fail: '^'
 ! !
 
 !PPComposedTest class methodsFor:'documentation'!
 
+version
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPComposedTest.st,v 1.3 2012-05-04 21:59:40 vrany Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPComposedTest.st,v 1.3 2012-05-04 21:59:40 vrany Exp $'
+!
+
 version_SVN
-    ^ '$Id: PPComposedTest.st,v 1.2 2012-01-13 11:22:50 cg Exp $'
+    ^ '§Id: PPComposedTest.st 4 2010-12-18 17:02:23Z kursjan §'
 ! !