FrontEndPrinter.java 3.61 KB
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
package jcircus.newfrontendmethod;

import java.util.List;
import java.util.Vector;

import net.sourceforge.czt.circus.ast.Action1;
import net.sourceforge.czt.circus.ast.Action2;
import net.sourceforge.czt.circus.ast.CircusAction;
import net.sourceforge.czt.circus.ast.Communication;
import net.sourceforge.czt.circus.ast.ExtChoiceAction;
import net.sourceforge.czt.circus.ast.IntChoiceAction;
import net.sourceforge.czt.circus.ast.InterleaveAction;
import net.sourceforge.czt.circus.ast.ParallelAction;
import net.sourceforge.czt.circus.ast.PrefixingAction;

public class FrontEndPrinter {
public static FrontEndAnn getFrontEndAnn (Communication c) {
FrontEndAnn fea = new FrontEndAnn ();
List l = c.getAnns();
int size = l.size();
for (int i = 0; i < size; i++) {
if (l.get(i) instanceof FrontEndAnn) {
System.out.println ("FE found");
fea = (FrontEndAnn) l.get(i);
}
}
return fea;
}
public static String frontEndAnnAsString (FrontEndAnn fea) {
Vector <Integer> vec = fea.getFrontEnd();
int size = vec.size();
String str = "<<[";
for (int i = 0; i < size; i++) {
str = str + vec.elementAt(i);
if (i < size - 1) {
str = str + ", ";
}
}
return str + "]>>";
}
public static String communicationAsString (Communication c) { //Comunicação impressa sem os campos
String cName = c.getChannelExpr().getName().toString();
FrontEndAnn fea = getFrontEndAnn(c);
return cName + frontEndAnnAsString (fea);
}
/*public String prefixingActionAsString (PrefixingAction pa) {
String c = communicationAsString (pa.getCommunication());
}*/
public static String frontEndContentAsString (CircusAction action) {
if (action instanceof Action1) {
if (action instanceof PrefixingAction) {
Communication comm = ((PrefixingAction)action).getCommunication();
CircusAction ca = ((PrefixingAction)action).getCircusAction();
String commstr = communicationAsString (comm);
return commstr + frontEndContentAsString (ca);
}
else {
return frontEndContentAsString (((Action1)action).getCircusAction());
}
}
else if (action instanceof Action2) {
if (action instanceof ParallelAction) {
CircusAction left = ((ParallelAction)action).getLeftAction();
CircusAction right = ((ParallelAction)action).getRightAction();
return
frontEndContentAsString (left) +
" || " +
frontEndContentAsString (right)
;
}
else if (action instanceof InterleaveAction) {
CircusAction left = ((InterleaveAction)action).getLeftAction();
CircusAction right = ((InterleaveAction)action).getRightAction();
return
frontEndContentAsString (left) +
" ||| " +
frontEndContentAsString (right)
;
}
else if (action instanceof ExtChoiceAction) {
CircusAction left = ((ExtChoiceAction)action).getLeftAction();
CircusAction right = ((ExtChoiceAction)action).getRightAction();
return
frontEndContentAsString (left) +
" [] " +
frontEndContentAsString (right)
;
}
else if (action instanceof IntChoiceAction) {
CircusAction left = ((IntChoiceAction)action).getLeftAction();
CircusAction right = ((IntChoiceAction)action).getRightAction();
return
frontEndContentAsString (left) +
" |~| " +
frontEndContentAsString (right)
;
}
else {
CircusAction left = ((Action2)action).getLeftAction();
CircusAction right = ((Action2)action).getRightAction();
return
frontEndContentAsString (left) +
" <A2> " +
frontEndContentAsString (right)
;
}
}
else {
return "";
}
}
}