Package eu.bandm.tools.umod
Class UMod2visitors.V_makeRewriterCoRewriter
java.lang.Object
eu.bandm.tools.umod.UMod.Visitor
eu.bandm.tools.umod.UMod2visitors.Lr_decoder
eu.bandm.tools.umod.UMod2visitors.V_makeRewriterCoRewriter
- Enclosing class:
UMod2visitors
Is created and called for toplevel classes, and then
created anew for all sub-classes!
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final Formatprotected UMod.FieldDefprotected GeneratedMethodprotected booleanprotected intprotected Formatprotected intThe cursor variables in "for (i0:...)" are built with an ever increasing number, instead of shadowing previous model names.protected booleanprotected Formatprotected UMod.ClassDef(package private) final Set<GeneratedMethod> protected booleanprotected GeneratedClassFields inherited from class eu.bandm.tools.umod.UMod2visitors.Lr_decoder
leftSelected, lrcode, lrposition, rightSelected -
Constructor Summary
ConstructorsConstructorDescriptionV_makeRewriterCoRewriter(int k, GeneratedClass v, UMod.ClassDef s, boolean iscorew, boolean ms) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaction(UMod.ClassDef cd) protected voidaction(UMod.FieldDef fd) protected voidprotected voidaction(UMod.T_map t) protected voidaction(UMod.T_opt t) protected voidPotential optimizations:
a) multiple not supported -> abfrage kann raus, single case only!
b) any side is empty -> return emptyprotected voidprotected voidprotected voidaction(UMod.T_rel t) protected voidaction(UMod.T_seq t) protected voidprotected FormatconvertOneSide_REW(boolean cast) protected voidprotected voidvisitMap_or_Multimap(UMod.T_2 t, boolean ismultimap) Diagram of semantics:
M = original, L/R = maps representing rewriting, M' = resultprotected voidvisitSetList(UMod.TypeConstructed t, boolean isseq) protected FormatwrapOptimizingCut(Format code) Methods inherited from class eu.bandm.tools.umod.UMod2visitors.Lr_decoder
updateSelection
-
Field Details
-
modelnum
protected int modelnumThe cursor variables in "for (i0:...)" are built with an ever increasing number, instead of shadowing previous model names. -
visitor
-
iscorewriter
protected boolean iscorewriter -
multiSupport
protected boolean multiSupport -
keynum
protected int keynum -
dorwmeth
-
superclass
-
curfield
-
model
-
result
-
userResponsible
protected boolean userResponsible -
suppress_addAll_warning_annotated
-
convertOneSide_CORW
-
-
Constructor Details
-
V_makeRewriterCoRewriter
public V_makeRewriterCoRewriter(int k, GeneratedClass v, UMod.ClassDef s, boolean iscorew, boolean ms)
-
-
Method Details
-
action
- Overrides:
actionin classUMod.Visitor
-
wrapOptimizingCut
-
action
- Overrides:
actionin classUMod.Visitor
-
action
- Overrides:
actionin classUMod.Visitor
-
action
- Overrides:
actionin classUMod.Visitor
-
put_suppress_addAll_warning_annotation
-
visitSetList
-
action
- Overrides:
actionin classUMod.Visitor
-
action
- Overrides:
actionin classUMod.Visitor
-
convertOneSide_REW
-
visitMap_or_Multimap
Diagram of semantics:
M = original, L/R = maps representing rewriting, M' = resultM ------------------> | | L | | R V V ------------------> M' M' := Linv o M o R potential optimizations: a) if L or M or R is empty ==> return empty M' immediately b) if M is map (not multimap) and rewriter does not support "substitute_multi()" then 1) L and R can be simple maps (not multi-maps!) and 2) only "injectiveness" of L needs to be tested, to ensure M' being a map! -
action
- Overrides:
actionin classUMod.Visitor
-
action
- Overrides:
actionin classUMod.Visitor
-
action
- Overrides:
actionin classUMod.Visitor
-
action
- Overrides:
actionin classUMod.Visitor
-
action
Potential optimizations:
a) multiple not supported -> abfrage kann raus, single case only!
b) any side is empty -> return empty- Overrides:
actionin classUMod.Visitor
-