author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Sat, 01 Nov 2014 00:30:28 +0000 | |
changeset 403 | 7063d523b064 |
parent 397 | 530d98b90b13 |
child 414 | 0eaf09920532 |
permissions | -rw-r--r-- |
391
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/petitparser/compiler' }" |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
PPCNode subclass:#PPCAbstractCharacterNode |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
instanceVariableNames:'character' |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
classVariableNames:'' |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
poolDictionaries:'' |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
category:'PetitCompiler-Nodes' |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
|
397
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
10 |
|
391
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
!PPCAbstractCharacterNode methodsFor:'accessing'! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
acceptsEpsilon |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
^ false |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
character |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
^ character |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
character: char |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
character := char |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
prefix |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
^ #char |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
! ! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
!PPCAbstractCharacterNode methodsFor:'analysis'! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
firstCharParser |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
^ character asParser |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
! ! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
!PPCAbstractCharacterNode methodsFor:'compiling'! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
body: compiler |
397
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
38 |
| id | |
391
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
|
397
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
40 |
character ppcPrintable ifTrue: [ |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
41 |
id := character storeString. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
42 |
] ifFalse: [ |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
43 |
id := compiler idFor: character prefixed: #char. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
44 |
compiler addConstant: (Character value: character asInteger) as: id . |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
45 |
]. |
391
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
|
397
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
47 |
compiler add: '(context peek == ', id, ')'. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
48 |
compiler indent. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
49 |
compiler add: 'ifFalse: [ self error: ''', character asInteger asString, ' expected'' at: context position ] '. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
50 |
compiler add: 'ifTrue: [ context next ].'. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
51 |
compiler dedent. |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
52 |
|
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
53 |
"Modified: / 30-10-2014 / 10:59:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
391
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
compileWith: compiler effect: effect id: id |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
self start: compiler id: id. |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
self body: compiler. |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
^ self stop: compiler. |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
|
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
compileWith: compiler id: id |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
self start: compiler. |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
self body: compiler. |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
^ compiler stopMethod. |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
! ! |
553a5456963b
Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
|
397
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
68 |
!PPCAbstractCharacterNode class methodsFor:'documentation'! |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
69 |
|
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
70 |
version_HG |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
71 |
|
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
72 |
^ '$Changeset: <not expanded> $' |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
73 |
! ! |
530d98b90b13
Portability fix PPCAbstractCharacterNode>>body: use #storeString instead of #printString.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
392
diff
changeset
|
74 |