author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 01 Jun 2015 22:02:17 +0100 | |
changeset 477 | b18b6cc7aabc |
child 478 | 711c8bc1ec04 |
permissions | -rw-r--r-- |
477
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/petitparser/compiler' }" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
Object subclass:#PPCCodeBlock |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
instanceVariableNames:'buffer indentation temporaries' |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'' |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'' |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
category:'PetitCompiler-Compiler-Codegen' |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
!PPCCodeBlock class methodsFor:'instance creation'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
new |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
"return an initialized instance" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
^ self basicNew initialize. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
!PPCCodeBlock methodsFor:'as yet unclassified'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
add: string |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
self nl. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
((Smalltalk respondsTo:#isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
indentation * 4 timesRepeat: [ buffer nextPut: Character space ]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
] ifFalse:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
indentation timesRepeat: [ buffer nextPut: Character tab ]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
self addOnLine: string. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
"Modified: / 21-05-2015 / 15:42:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
addOnLine: string |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
buffer nextPutAll: string. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
nl |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
^ buffer nextPut: Character cr |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
!PPCCodeBlock methodsFor:'code generation'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
code: aStringOrBlock |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
aStringOrBlock isString ifTrue:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
buffer nextPutAll: aStringOrBlock |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
] ifFalse:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
aStringOrBlock value |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
"Created: / 01-06-2015 / 21:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
!PPCCodeBlock methodsFor:'code generation - variables'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
allocateTemporaryVariableNamed:preferredName |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
"Allocate a new variable with (preferably) given name. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
Returns a real variable name that should be used." |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
(temporaries includes:preferredName) ifFalse:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
temporaries add:preferredName. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
^ preferredName |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
] ifTrue:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
| name | |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
name := preferredName , '_' , (temporaries size + 1) printString. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
temporaries add:name. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
^ name |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
"Created: / 23-04-2015 / 17:37:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
"Modified: / 01-06-2015 / 21:03:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
!PPCCodeBlock methodsFor:'indentation'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
dedent |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
indentation := indentation - 1 |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
indent |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
indentation := indentation + 1 |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
indentationLevel |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
^ indentation |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
indentationLevel: value |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
indentation := value |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
!PPCCodeBlock methodsFor:'initialization'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
initialize |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
"Invoked when a new instance is created." |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
"/ please change as required (and remove this comment) |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
buffer := String new writeStream. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
indentation := 1. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
temporaries := OrderedCollection new. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
"/ super initialize. -- commented since inherited method does nothing |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
"Modified: / 01-06-2015 / 20:57:08 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
!PPCCodeBlock methodsFor:'printing and storing'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
codeOn: aStream |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
"Dumps generated code on given stream" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
temporaries notEmpty ifTrue:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
((Smalltalk respondsTo:#isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
indentation * 4 timesRepeat: [ aStream nextPut: Character space ]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
] ifFalse:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
indentation timesRepeat: [ buffer nextPut: Character tab ]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
aStream nextPut: $|. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
temporaries do:[:e | aStream space; nextPutAll: e ]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
aStream space. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
aStream nextPut: $|. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
self nl. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
"In Smalltalk/X, there should be a blank line after temporaries" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
((Smalltalk respondsTo:#isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[ |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
self nl. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
]. |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
aStream nextPutAll: buffer contents |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
"Created: / 01-06-2015 / 21:26:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
!PPCCodeBlock class methodsFor:'documentation'! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
version |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
^ 'Path: stx/goodies/petitparser/compiler/PPCCodeBlock.st, Version: 1.0, User: jv, Time: 2015-06-01T21:57:38.671+01' |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
|
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
version_HG |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
^ 'Path: stx/goodies/petitparser/compiler/PPCCodeBlock.st, Version: 1.0, User: jv, Time: 2015-06-01T21:57:38.671+01' |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
! ! |
b18b6cc7aabc
Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |