Skip to content

Commit e483ffd

Browse files
author
Ray Hu
committed
Continued.
1 parent c60483a commit e483ffd

34 files changed

Lines changed: 222 additions & 1357 deletions

modules/core/src/main/java/org/scribble/ast/AstFactory.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -45,90 +45,62 @@
4545

4646
public interface AstFactory
4747
{
48-
//enum SIMPLE_NAME { AMBIG, OPERATOR, PARAMETER, RECURSIONVAR, ROLE, MODULE, PROTOCOL }
49-
//enum QUALIFIED_NAME { MESSAGESIGNATURE, MODULE, PAYLOADTYPE, PROTOCOL }
50-
5148
Module Module(
5249
ModuleDecl moddecl,
53-
//List<? extends ImportDecl> imports,
54-
List<ImportDecl> imports,
50+
List<ImportDecl<? extends Kind>> imports,
5551
List<NonProtocolDecl<? extends Kind>> data,
56-
//List<? extends AbstractProtocolDecl<? extends ProtocolHeader, ? extends ProtocolDefinition<? extends ProtocolBlock<? extends InteractionSequence<? extends InteractionNode>>>>> protos);
5752
List<ProtocolDecl<? extends ProtocolKind>> protos);
5853

5954
MessageSigNode MessageSigNode(OpNode op, PayloadElemList payload);
6055
PayloadElemList PayloadElemList(List<PayloadElem> payloadelems);
6156
PayloadElem PayloadElement(PayloadElemNameNode name);
6257

6358
ModuleDecl ModuleDecl(ModuleNameNode fullmodname);
64-
//ImportModule ImportModule(ModuleNameNode modname, SimpleProtocolNameNode alias);
6559
ImportModule ImportModule(ModuleNameNode modname, ModuleNameNode alias);
6660

6761
MessageSigNameDecl MessageSigDecl(String schema, String extName, String source, MessageSigNameNode alias);
6862
DataTypeDecl DataTypeDecl(String schema, String extName, String source, DataTypeNameNode alias);
6963

7064
GProtocolDecl GProtocolDecl(GProtocolHeader header, GProtocolDef def);
71-
//GProtocolHeader GlobalProtocolHeader(SimpleProtocolNameNode name, RoleDeclList roledecls, ParamDeclList paramdecls);
7265
GProtocolHeader GProtocolHeader(GProtocolNameNode name, RoleDeclList roledecls, NonRoleParamDeclList paramdecls);
7366

74-
//RoleDeclList RoleDeclList(List<RoleDecl> rds);
75-
//RoleDeclList RoleDeclList(List<HeaderParamDecl<Role, RoleKind>> rds);
7667
RoleDeclList RoleDeclList(List<RoleDecl> rds);
7768
RoleDecl RoleDecl(RoleNode namenode);
78-
//ParamDeclList ParameterDeclList(List<ParamDecl> pds);
79-
//ParamDeclList ParameterDeclList(List<HeaderParamDecl<Name<Kind>, Kind>> pds);
80-
//ParamDeclList ParameterDeclList(List<HeaderParamDecl<Kind>> pds);
8169
NonRoleParamDeclList NonRoleParamDeclList(List<NonRoleParamDecl<Kind>> pds);
82-
//ParamDecl ParameterDecl(org.scribble2.model.ParamDecl.Kind kind, ParameterNode namenode);
8370
<K extends Kind> NonRoleParamDecl<K> ParamDecl(K kind, NonRoleParamNode<K> namenode);
84-
//<K extends Kind> ParamDecl<K> ParameterDecl(ParameterNode<K> namenode);
8571

8672
GProtocolDef GProtocolDefinition(GProtocolBlock block);
8773
GProtocolBlock GProtocolBlock(GInteractionSeq gis);
8874
GInteractionSeq GInteractionSequence(List<GInteractionNode> gis);
8975

9076
GMessageTransfer GMessageTransfer(RoleNode src, MessageNode msg, List<RoleNode> dests);
91-
//GlobalChoice GlobalChoice(RoleNode subj, List<GlobalProtocolBlock> blocks);
9277
GChoice GChoice(RoleNode subj, List<ProtocolBlock<Global>> blocks);
93-
//GlobalRecursion GlobalRecursion(RecursionVarNode recvar, GlobalProtocolBlock block);
9478
GRecursion GRecursion(RecVarNode recvar, ProtocolBlock<Global> block);
9579
GContinue GContinue(RecVarNode recvar);
96-
//GlobalDo GlobalDo(ScopeNode scope, RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto);
97-
//GDo GlobalDo(RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto);
9880
GDo GDo(RoleArgList roleinstans, NonRoleArgList arginstans, GProtocolNameNode proto);
9981

10082
RoleArgList RoleArgList(List<RoleArg> ris);
10183
RoleArg RoleArg(RoleNode role);
10284
NonRoleArgList NonRoleArgList(List<NonRoleArg> ais);
10385
NonRoleArg NonRoleArg(NonRoleArgNode arg);
10486

105-
// FIXME: instead of enums, take class as generic parameter
106-
//SimpleNameNode SimpleNameNode(SIMPLE_NAME kind, String identifier);
107-
//<K extends Kind> NameNode<? extends Name<K>, K> SimpleNameNode(K kind, String identifier);
10887
<K extends Kind> NameNode<K> SimpleNameNode(K kind, String identifier);
109-
//QualifiedNameNode QualifiedNameNode(QUALIFIED_NAME kind, String... elems);
110-
//<K extends Kind> QualifiedNameNode<? extends Name<K>, K> QualifiedNameNode(K kind, String... elems);
11188
<K extends Kind> QualifiedNameNode<K> QualifiedNameNode(K kind, String... elems);
11289

11390
AmbigNameNode AmbiguousNameNode(String identifier);
11491
<K extends Kind> NonRoleParamNode<K> NonRoleParamNode(K kind, String identifier);
11592

11693
LProtocolDecl LProtocolDecl(LProtocolHeader header, LProtocolDef def);
117-
//LProtocolHeader LocalProtocolHeader(SimpleProtocolNameNode name, RoleDeclList roledecls, ParamDeclList paramdecls);
11894
LProtocolHeader LProtocolHeader(LProtocolNameNode name, RoleDeclList roledecls, NonRoleParamDeclList paramdecls);
11995
SelfRoleDecl SelfRoleDecl(RoleNode namenode);
12096
LProtocolDef LProtocolDefinition(LProtocolBlock block);
12197
LProtocolBlock LProtocolBlock(LInteractionSeq seq);
122-
//LocalInteractionSequence LocalInteractionSequence(List<LocalInteractionNode> actions);
12398
LInteractionSeq LInteractionSequence(List<? extends InteractionNode<Local>> actions);
12499

125100
LSend LSend(RoleNode src, MessageNode msg, List<RoleNode> dests);
126101
LReceive LReceive(RoleNode src, MessageNode msg, List<RoleNode> dests);
127-
//LocalChoice LocalChoice(RoleNode subj, List<LocalProtocolBlock> blocks);
128102
LChoice LChoice(RoleNode subj, List<ProtocolBlock<Local>> blocks);
129103
LRecursion LRecursion(RecVarNode recvar, LProtocolBlock block);
130104
LContinue LContinue(RecVarNode recvar);
131-
//LocalDo LocalDo(ScopeNode scope, RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto);
132-
//LDo LocalDo(RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto);
133105
LDo LDo(RoleArgList roleinstans, NonRoleArgList arginstans, LProtocolNameNode proto);
134106
}

modules/core/src/main/java/org/scribble/ast/AstFactoryImpl.java

Lines changed: 8 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@
7878

7979
public class AstFactoryImpl implements AstFactory
8080
{
81-
public static final AstFactory FACTORY = new AstFactoryImpl(); // FIXME: move somewhere else
81+
public static final AstFactory FACTORY = new AstFactoryImpl();
8282

8383
@Override
8484
public MessageSigNode MessageSigNode(OpNode op, PayloadElemList payload)
8585
{
8686
MessageSigNode msn = new MessageSigNode(op, payload);
87-
msn = del(msn, createDefaultDelegate()); // FIXME: does another shallow copy
87+
msn = del(msn, createDefaultDelegate());
8888
return msn;
8989
}
9090

@@ -107,14 +107,11 @@ public PayloadElem PayloadElement(PayloadElemNameNode name)
107107
@Override
108108
public Module Module(
109109
ModuleDecl moddecl,
110-
//List<? extends ImportDecl> imports,
111-
List<ImportDecl> imports,
110+
List<ImportDecl<? extends Kind>> imports,
112111
List<NonProtocolDecl<? extends Kind>> data,
113-
//List<? extends AbstractProtocolDecl<? extends ProtocolHeader, ? extends ProtocolDefinition<? extends ProtocolBlock<? extends InteractionSequence<? extends InteractionNode>>>>> protos)
114112
List<ProtocolDecl<? extends org.scribble.sesstype.kind.ProtocolKind>> protos)
115113
{
116114
Module module = new Module(moddecl, imports, data, protos);
117-
//module = del(module, new ModuleDelegate(module.getFullModuleName()));
118115
module = del(module, new ModuleDel());
119116
return module;
120117
}
@@ -128,11 +125,9 @@ public ModuleDecl ModuleDecl(ModuleNameNode fullmodname)
128125
}
129126

130127
@Override
131-
//public ImportModule ImportModule(ModuleNameNode modname, SimpleProtocolNameNode alias)
132128
public ImportModule ImportModule(ModuleNameNode modname, ModuleNameNode alias)
133129
{
134130
ImportModule im = new ImportModule(modname, alias);
135-
//im = del(im, createDefaultDelegate());
136131
im = del(im, new ImportModuleDel());
137132
return im;
138133
}
@@ -162,7 +157,6 @@ public GProtocolDecl GProtocolDecl(GProtocolHeader header, GProtocolDef def)
162157
}
163158

164159
@Override
165-
//public GProtocolHeader GlobalProtocolHeader(SimpleProtocolNameNode name, RoleDeclList roledecls, ParamDeclList paramdecls)
166160
public GProtocolHeader GProtocolHeader(GProtocolNameNode name, RoleDeclList roledecls, NonRoleParamDeclList paramdecls)
167161
{
168162
GProtocolHeader gph = new GProtocolHeader(name, roledecls, paramdecls);
@@ -171,8 +165,6 @@ public GProtocolHeader GProtocolHeader(GProtocolNameNode name, RoleDeclList role
171165
}
172166

173167
@Override
174-
//public RoleDeclList RoleDeclList(List<RoleDecl> rds)
175-
//public RoleDeclList RoleDeclList(List<HeaderParamDecl<Role, RoleKind>> rds)
176168
public RoleDeclList RoleDeclList(List<RoleDecl> rds)
177169
{
178170
RoleDeclList rdl = new RoleDeclList(rds);
@@ -189,8 +181,6 @@ public RoleDecl RoleDecl(RoleNode namenode)
189181
}
190182

191183
@Override
192-
//public ParamDeclList ParameterDeclList(List<ParamDecl> pds)
193-
//public ParamDeclList ParameterDeclList(List<HeaderParamDecl<Name<Kind>, Kind>> pds)
194184
public NonRoleParamDeclList NonRoleParamDeclList(List<NonRoleParamDecl<Kind>> pds)
195185
{
196186
NonRoleParamDeclList pdl = new NonRoleParamDeclList(pds);
@@ -199,12 +189,9 @@ public NonRoleParamDeclList NonRoleParamDeclList(List<NonRoleParamDecl<Kind>> pd
199189
}
200190

201191
@Override
202-
//public ParamDecl ParameterDecl(org.scribble2.model.ParamDecl.Kind kind, ParameterNode namenode)
203192
public <K extends Kind> NonRoleParamDecl<K> ParamDecl(K kind, NonRoleParamNode<K> namenode)
204-
//public <K extends Kind> ParamDecl<K> ParameterDecl(ParameterNode<K> namenode)
205193
{
206194
NonRoleParamDecl<K> pd = new NonRoleParamDecl<K>(kind, namenode);
207-
//ParamDecl<K> pd = new ParamDecl<K>(namenode);
208195
pd = del(pd, new ParamDeclDel());
209196
return pd;
210197
}
@@ -242,7 +229,6 @@ public GMessageTransfer GMessageTransfer(RoleNode src, MessageNode msg, List<Rol
242229
}
243230

244231
@Override
245-
//public GlobalChoice GlobalChoice(RoleNode subj, List<GlobalProtocolBlock> blocks)
246232
public GChoice GChoice(RoleNode subj, List<ProtocolBlock<Global>> blocks)
247233
{
248234
GChoice gc = new GChoice(subj, blocks);
@@ -251,7 +237,6 @@ public GChoice GChoice(RoleNode subj, List<ProtocolBlock<Global>> blocks)
251237
}
252238

253239
@Override
254-
//public GlobalRecursion GlobalRecursion(RecursionVarNode recvar, GlobalProtocolBlock block)
255240
public GRecursion GRecursion(RecVarNode recvar, ProtocolBlock<Global> block)
256241
{
257242
GRecursion gr = new GRecursion(recvar, block);
@@ -267,21 +252,11 @@ public GContinue GContinue(RecVarNode recvar)
267252
return gc;
268253
}
269254

270-
/*@Override
271-
public GlobalDo GlobalDo(RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto)
272-
{
273-
return GlobalDo(null, roleinstans, arginstans, proto);
274-
}*/
275-
276255
@Override
277-
//public GlobalDo GlobalDo(ScopeNode scope, RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto)
278-
//public GDo GlobalDo(RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto)
279256
public GDo GDo(RoleArgList roleinstans, NonRoleArgList arginstans, GProtocolNameNode proto)
280257
{
281-
//GlobalDo gd = new GlobalDo(scope, roleinstans, arginstans, proto);
282258
GDo gd = new GDo(roleinstans, arginstans, proto);
283-
//gd = del(gd, createDefaultDelegate()); // FIXME
284-
gd = del(gd, new GDoDel()); // FIXME
259+
gd = del(gd, new GDoDel());
285260
return gd;
286261
}
287262

@@ -318,28 +293,9 @@ public NonRoleArg NonRoleArg(NonRoleArgNode arg)
318293
}
319294

320295
@Override
321-
//public SimpleNameNode SimpleNameNode(SIMPLE_NAME kind, String identifier)
322-
//public <K extends Kind> NameNode<? extends Name<K>, K> SimpleNameNode(K kind, String identifier)
323296
public <K extends Kind> NameNode<K> SimpleNameNode(K kind, String identifier)
324297
{
325-
//SimpleNameNode snn;
326-
//NameNode<? extends Name<? extends Kind>, ? extends Kind> snn;
327298
NameNode<? extends Kind> snn;
328-
/*switch(kind)
329-
{
330-
case AMBIG:
331-
{
332-
snn = new AmbiguousNameNode(identifier);
333-
snn = (AmbiguousNameNode) snn.del(new AmbiguousNameDelegate());
334-
return snn;
335-
}
336-
case OPERATOR: snn = new OperatorNode(identifier); break;
337-
case PARAMETER: snn = new ParameterNode(identifier); break;
338-
case RECURSIONVAR: snn = new RecursionVarNode(identifier); break;
339-
case ROLE: snn = new RoleNode(identifier); break;
340-
case PROTOCOL: snn = new SimpleProtocolNameNode(identifier); break;
341-
default: throw new RuntimeException("Shouldn't get in here: " + kind);
342-
}*/
343299
if (kind.equals(OpKind.KIND))
344300
{
345301
snn = new OpNode(identifier);
@@ -354,46 +310,17 @@ else if (kind.equals(RoleKind.KIND))
354310
rn = (RoleNode) del(rn, new RoleNodeDel());
355311
return castNameNode(kind, rn);
356312
}
357-
/*else if (kind.equals(ProtocolKind.KIND))
358-
{
359-
snn = new SimpleProtocolNameNode(identifier);
360-
}*/
361313
else
362314
{
363315
throw new RuntimeException("Shouldn't get in here: " + kind);
364316
}
365-
//return castNameNode(kind, (NameNode<? extends Name<K>, K>) snn.del(createDefaultDelegate()));
366317
return castNameNode(kind, del(snn, createDefaultDelegate()));
367318
}
368-
369-
/*private static <T extends NameNode<? extends Name<? extends Kind>, K>, K extends Kind> T
370-
castNameNode(K kind, NameNode<? extends Name<? extends Kind>, ? extends Kind> n)*/
371-
private static <T extends NameNode<K>, K extends Kind> T
372-
castNameNode(K kind, NameNode<? extends Kind> n)
373-
{
374-
if (!n.toName().kind.equals(kind))
375-
{
376-
throw new RuntimeException("Shouldn't get in here: " + kind + ", " + n);
377-
}
378-
@SuppressWarnings("unchecked")
379-
T tmp = (T) n;
380-
return tmp;
381-
}
382319

383320
@Override
384-
//public QualifiedNameNode QualifiedNameNode(QUALIFIED_NAME kind, String... elems)
385-
//public <K extends Kind> QualifiedNameNode<? extends Name<K>, K> QualifiedNameNode(K kind, String... elems)
386321
public <K extends Kind> QualifiedNameNode<K> QualifiedNameNode(K kind, String... elems)
387322
{
388-
//QualifiedNameNode<? extends Name<? extends Kind>, ? extends Kind> qnn;
389323
QualifiedNameNode<? extends Kind> qnn;
390-
/*switch(kind)
391-
{
392-
case MESSAGESIGNATURE: qnn = new MessageSignatureNameNode(elems); break;
393-
case MODULE: qnn = new ModuleNameNode(elems); break;
394-
case PROTOCOL: qnn = new ProtocolNameNode(elems); break;
395-
default: throw new RuntimeException("Shouldn't get in here: " + kind);
396-
}*/
397324
if (kind.equals(ModuleKind.KIND))
398325
{
399326
qnn = new ModuleNameNode(elems);
@@ -418,13 +345,10 @@ else if (kind.equals(DataTypeKind.KIND))
418345
{
419346
throw new RuntimeException("Shouldn't get in here: " + kind);
420347
}
421-
return castQualifiedNameNode(kind, del(qnn, createDefaultDelegate()));
348+
return castNameNode(kind, del(qnn, createDefaultDelegate()));
422349
}
423-
424-
/*private static <T extends QualifiedNameNode<? extends Name<? extends Kind>, K>, K extends Kind> T
425-
castQualifiedNameNode(K kind, QualifiedNameNode<? extends Name<? extends Kind>, ? extends Kind> n)*/
426-
private static <T extends QualifiedNameNode<K>, K extends Kind> T
427-
castQualifiedNameNode(K kind, QualifiedNameNode<? extends Kind> n)
350+
351+
private static <T extends NameNode<K>, K extends Kind> T castNameNode(K kind, NameNode<? extends Kind> n)
428352
{
429353
if (!n.toName().kind.equals(kind))
430354
{
@@ -460,7 +384,6 @@ public LProtocolDecl LProtocolDecl(LProtocolHeader header, LProtocolDef def)
460384
}
461385

462386
@Override
463-
//public LProtocolHeader LocalProtocolHeader(SimpleProtocolNameNode name, RoleDeclList roledecls, ParamDeclList paramdecls)
464387
public LProtocolHeader LProtocolHeader(LProtocolNameNode name, RoleDeclList roledecls, NonRoleParamDeclList paramdecls)
465388
{
466389
LProtocolHeader lph = new LProtocolHeader(name, roledecls, paramdecls);
@@ -493,7 +416,6 @@ public LProtocolBlock LProtocolBlock(LInteractionSeq seq)
493416
}
494417

495418
@Override
496-
//public LocalInteractionSequence LocalInteractionSequence(List<LocalInteractionNode> actions)
497419
public LInteractionSeq LInteractionSequence(List<? extends InteractionNode<Local>> actions)
498420
{
499421
LInteractionSeq lis = new LInteractionSeq(actions);
@@ -518,7 +440,6 @@ public LReceive LReceive(RoleNode src, MessageNode msg, List<RoleNode> dests)
518440
}
519441

520442
@Override
521-
//public LocalChoice LocalChoice(RoleNode subj, List<LocalProtocolBlock> blocks)
522443
public LChoice LChoice(RoleNode subj, List<ProtocolBlock<Local>> blocks)
523444
{
524445
LChoice lc = new LChoice(subj, blocks);
@@ -542,20 +463,10 @@ public LContinue LContinue(RecVarNode recvar)
542463
return lc;
543464
}
544465

545-
/*@Override
546-
public LocalDo LocalDo(RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto)
547-
{
548-
return LocalDo(null, roleinstans, arginstans, proto);
549-
}*/
550-
551466
@Override
552-
//public LocalDo LocalDo(ScopeNode scope, RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto)
553-
//public LDo LocalDo(RoleInstantiationList roleinstans, ArgumentInstantiationList arginstans, ProtocolNameNode proto)
554467
public LDo LDo(RoleArgList roleinstans, NonRoleArgList arginstans, LProtocolNameNode proto)
555468
{
556-
//LocalDo ld = new LocalDo(scope, roleinstans, arginstans, proto);
557469
LDo ld = new LDo(roleinstans, arginstans, proto);
558-
//ld = del(ld, createDefaultDelegate());
559470
ld = del(ld, new LDoDel());
560471
return ld;
561472
}
@@ -568,7 +479,7 @@ private ScribDel createDefaultDelegate()
568479
@SuppressWarnings("unchecked")
569480
private static <T extends ScribNodeBase> T del(T n, ScribDel del)
570481
{
571-
ScribNodeBase ret = n.del(del);
482+
ScribNodeBase ret = n.del(del); // FIXME: del makes another shallow copy of n
572483
if (ret.getClass() != n.getClass())
573484
{
574485
throw new RuntimeException("Shouldn't get in here: " + ret.getClass() + ", " + n.getClass());

0 commit comments

Comments
 (0)