diff -r e1b11f74e142 -r 90de244a7fa2 PPComposedTest.st --- a/PPComposedTest.st Mon Sep 12 19:48:53 2011 +0200 +++ b/PPComposedTest.st Fri Jan 13 12:22:50 2012 +0100 @@ -1,4 +1,4 @@ -"{ Package: 'squeak:petitparser' }" +"{ Package: 'stx:goodies/petitparser' }" PPAbstractParseTest subclass:#PPComposedTest instanceVariableNames:'' @@ -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 " ! 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,7 +397,7 @@ 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: '^' ! ! @@ -405,5 +405,5 @@ !PPComposedTest class methodsFor:'documentation'! version_SVN - ^ '$Id: PPComposedTest.st,v 1.1 2011-08-18 18:56:17 cg Exp $' + ^ '$Id: PPComposedTest.st,v 1.2 2012-01-13 11:22:50 cg Exp $' ! !