Skip to content

Commit bd1ee60

Browse files
committed
fix2: concrete syntax of InstanceFields, StaticFileds and StaticInit
1 parent df01866 commit bd1ee60

File tree

4 files changed

+12
-22
lines changed

4 files changed

+12
-22
lines changed

src/common/core-functions.k

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,9 @@ syntax KListWrap ::= "[" KList "]" [klabel('KListWrap), latex(\terminal{[} {#1}
286286
rule [S1:K,, Stmts:KList] => S1 ~> [Stmts] [structural]
287287
rule [.KList] => .K [structural]
288288

289+
rule 'ClassBodyDecList(Hd:K,,Tl:K) => Hd ~> Tl
290+
rule .ClassBodyDecList => .
291+
289292
//@ A wrapper over an arbitrary KList, wrapper being of type KResult.
290293
syntax KRListWrap ::= "kr" "[" KList "]" [latex(\terminal{kr[} {#1} \terminal{]})]
291294
syntax MKR ::= KRListWrap

src/exec/static-init.k

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ rule [staticInit]:
3333
// because during base class initialization those fields might be accessed.
3434
staticInit(BaseClass),,
3535
'Try(
36-
StaticInit,,
36+
{StaticInit},,
3737

3838
//catch clause of 'Try todo ugly format
3939

src/exec/unfolding.k

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ rule [unfolding-class-unfold-inner]:
4545
<folded>
4646
_:KLabel(
4747
'ClassDecHead(_),,
48-
'ClassBody( ( ClassDecKL:KLabel(ClassDecKs:KList) Tl:ClassBodyDecList => Tl ) )
48+
'ClassBody( (ClassDecKL:KLabel(ClassDecKs:KList)):>ClassBodyDec Tl:>ClassBodyDecList => Tl )
4949
)
5050
</folded>
5151

@@ -98,7 +98,7 @@ rule [unfolding-class-inherit-methods-object-and-interfaces]:
9898
rule [unfolding-class-members-staticFields]:
9999
<k> unfoldingPhase </k>
100100
<classType> Class:ClassType </classType>
101-
<staticFields> C:ClassBodyDecList => addElementToClassBodyDecListEnd(C, StaticField) </staticFields>
101+
<staticFields> C:>ClassBodyDecList => addElementToClassBodyDecListEnd(C, (static T X;)) </staticFields>
102102
<folded>
103103
KL:KLabel(
104104
'ClassDecHead(
@@ -109,13 +109,11 @@ rule [unfolding-class-members-staticFields]:
109109
'Some('ImplementsDec( _ ))
110110
),,
111111
'ClassBody(
112-
( StaticField:ClassBodyDec Rest:ClassBodyDecList => Rest)
112+
( (static T:Type X:VarDec;) Rest:>ClassBodyDecList => Rest)
113113
)
114114
)
115115
</folded>
116116
<classPhase> UnfoldingStartedCPhase </classPhase>
117-
when
118-
containsStaticInit(Rest)
119117

120118
rule [unfolding-class-members-StaticInit-classMetaType-extends]:
121119
<k> unfoldingPhase </k>
@@ -133,7 +131,7 @@ rule [unfolding-class-members-StaticInit-classMetaType-extends]:
133131
'Some('ImplementsDec( _ ))
134132
),,
135133
'ClassBody(
136-
( 'StaticInit('Block(StaticInit:BlockStmList)) Rest:ClassBodyDecList => Rest )
134+
( 'StaticInit('Block(StaticInit:BlockStmList)) Rest:>ClassBodyDecList => Rest )
137135
)
138136
)
139137
</folded>
@@ -142,7 +140,7 @@ rule [unfolding-class-members-StaticInit-classMetaType-extends]:
142140
rule [unfolding-class-members-instanceFields]:
143141
<k> unfoldingPhase </k>
144142
<classType> Class:ClassType </classType>
145-
<instanceFields> C:ClassBodyDecList => addElementToClassBodyDecListEnd(C, InstanceField) </instanceFields>
143+
<instanceFields> C:>ClassBodyDecList => addElementToClassBodyDecListEnd(C, (.AnnoFieldModList T X;)) </instanceFields>
146144
<folded>
147145
KL:KLabel(
148146
'ClassDecHead(
@@ -153,24 +151,16 @@ rule [unfolding-class-members-instanceFields]:
153151
'Some('ImplementsDec( _ ))
154152
),,
155153
'ClassBody(
156-
(InstanceField:ClassBodyDec Rest:ClassBodyDecList => Rest)
154+
( (.AnnoFieldModList T:Type X:VarDec;) Rest:>ClassBodyDecList => Rest)
157155
)
158156
)
159157
</folded>
160158
<classPhase> UnfoldingStartedCPhase </classPhase>
161-
when
162-
(notBool containsStaticInit(Rest)) andBool getKLabel(InstanceField) =/=KLabel 'MethodDec
163159

164160
syntax KItem ::= getClassMetaType ( KLabel )
165161
rule getClassMetaType('ClassDec) => classCMT [anywhere]
166162
rule getClassMetaType('InterfaceDec) => interfaceCMT [anywhere]
167163

168-
// True if given List contains a 'StaticInit(\_) term
169-
syntax KItem ::= containsStaticInit( ClassBodyDecList ) [function]
170-
rule containsStaticInit('StaticInit(_) _:ClassBodyDecList) => true
171-
rule containsStaticInit(.ClassBodyDecList) => false
172-
rule containsStaticInit(Hd:ClassBodyDec Rest:ClassBodyDecList) => containsStaticInit(Rest) [owise]
173-
174164
rule [unfolding-ImplementsDec]:
175165
<k> unfoldingPhase </k>
176166
<classType> Class:ClassType </classType>
@@ -205,7 +195,7 @@ rule [unfolding-MethodDec]:
205195
<folded>
206196
_:KLabel(
207197
'ClassDecHead(_),,
208-
'ClassBody(
198+
'ClassBody((
209199
'MethodDec(
210200
'MethodDecHead(
211201
accCT(Acc:AccessMode, CT:ContextType),,
@@ -216,7 +206,7 @@ rule [unfolding-MethodDec]:
216206
'None(.KList) //don't know what should be here
217207
),,
218208
MethodBody:K
219-
) Tl:ClassBodyDecList => Tl )
209+
) Tl:>ClassBodyDecList => Tl ))
220210
)
221211
</folded>
222212
<classPhase> UnfoldingStartedCPhase </classPhase>

src/prep/process-class-members.k

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ rule [processType]:
9696
...
9797
</class>
9898

99-
rule 'ClassBodyDecList(Hd:K,,Tl:K) => Hd ~> Tl
100-
rule .ClassBodyDecList => .
101-
10299
rule 'InterfaceMemberDecList(Hd:K,,Tl:K) => Hd ~> Tl
103100
rule .InterfaceMemberDecList => .
104101

0 commit comments

Comments
 (0)