author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 17 Aug 2015 13:39:38 +0100 | |
changeset 517 | 9a7fa841f12e |
parent 427 | a7f5e6de19d2 |
permissions | -rw-r--r-- |
376
a2656b27cace
Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
375
diff
changeset
|
1 |
"{ Package: 'stx:goodies/petitparser/tests' }" |
0 | 2 |
|
427
a7f5e6de19d2
Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
380
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
a7f5e6de19d2
Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
380
diff
changeset
|
4 |
|
0 | 5 |
PPCompositeParser subclass:#PPLambdaParser |
6 |
instanceVariableNames:'expression abstraction application variable' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'PetitTests-Examples' |
|
10 |
! |
|
11 |
||
12 |
||
13 |
!PPLambdaParser class methodsFor:'curch-booleans'! |
|
14 |
||
15 |
and |
|
16 |
^ self parse: '\p.\q.((p q) p)' |
|
17 |
! |
|
18 |
||
19 |
false |
|
20 |
^ self parse: '\x.\y.y' |
|
21 |
! |
|
22 |
||
23 |
ifthenelse |
|
24 |
^ self parse: '\p.p' |
|
25 |
! |
|
26 |
||
27 |
not |
|
28 |
^ self parse: '\p.\a.\b.((p b) a)' |
|
29 |
! |
|
30 |
||
31 |
or |
|
32 |
^ self parse: '\p.\q.((p p) q)' |
|
33 |
! |
|
34 |
||
35 |
true |
|
36 |
^ self parse: '\x.\y.x' |
|
37 |
! ! |
|
38 |
||
39 |
!PPLambdaParser methodsFor:'accessing'! |
|
40 |
||
41 |
start |
|
42 |
^ expression end |
|
43 |
! ! |
|
44 |
||
45 |
!PPLambdaParser methodsFor:'productions'! |
|
46 |
||
47 |
abstraction |
|
427
a7f5e6de19d2
Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
380
diff
changeset
|
48 |
^ $\ asParser trim , variable , $. asParser trim , expression |
a7f5e6de19d2
Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
380
diff
changeset
|
49 |
==> [ :node | Array with: (node at: 2) with: (node at: 4) ] |
0 | 50 |
! |
51 |
||
52 |
application |
|
427
a7f5e6de19d2
Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
380
diff
changeset
|
53 |
^ $( asParser trim , expression , expression , $) asParser trim |
a7f5e6de19d2
Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
380
diff
changeset
|
54 |
==> [ :node | Array with: (node at: 2) with: (node at: 3) ] |
0 | 55 |
! |
56 |
||
57 |
expression |
|
58 |
^ variable / abstraction / application |
|
59 |
! |
|
60 |
||
61 |
variable |
|
184 | 62 |
^ (#letter asParser , #word asParser star) flatten trim |
0 | 63 |
! ! |
64 |
||
65 |
!PPLambdaParser class methodsFor:'documentation'! |
|
66 |
||
29 | 67 |
version |
184 | 68 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLambdaParser.st,v 1.4 2014-03-04 14:34:00 cg Exp $' |
29 | 69 |
! |
70 |
||
71 |
version_CVS |
|
184 | 72 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLambdaParser.st,v 1.4 2014-03-04 14:34:00 cg Exp $' |
29 | 73 |
! |
74 |
||
380
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
75 |
version_HG |
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
76 |
|
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
77 |
^ '$Changeset: <not expanded> $' |
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
78 |
! |
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
79 |
|
0 | 80 |
version_SVN |
184 | 81 |
^ '$Id: PPLambdaParser.st,v 1.4 2014-03-04 14:34:00 cg Exp $' |
0 | 82 |
! ! |
184 | 83 |