This commit is contained in:
fixminer
2020-02-04 16:02:26 +01:00
parent 1d14187e28
commit 6639e84e94
@@ -84,7 +84,67 @@ public class HierarchicalRegrouperForC {
// }
}
}
return reActionSets;
List<HierarchicalActionSet> reActionSets1 = new ArrayList<>();
for(HierarchicalActionSet a:reActionSets){
HierarchicalActionSet hierarchicalActionSet = removeBlocks(a);
hierarchicalActionSet = removeIFthenBlocks(hierarchicalActionSet);
reActionSets1.add(hierarchicalActionSet);
}
return reActionSets1;
// return reActionSets;
}
private HierarchicalActionSet removeBlocks(HierarchicalActionSet actionSet){
List<HierarchicalActionSet> subActions = actionSet.getSubActions();
if (subActions.size() == 1){
HierarchicalActionSet subaction = subActions.get(0);
//else,then,block
if(subaction.getAstNodeType().equals("block")){//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){
List<HierarchicalActionSet> subSubActions = subaction.getSubActions();
if(subSubActions.size() == 1){
HierarchicalActionSet subsubsubAction = subSubActions.get(0);
List<Integer> keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subsubsubAction.getAstNodeType());
if(keysByValue != null && keysByValue.size() ==1){
subsubsubAction.setParent(null);
return removeBlocks(subsubsubAction);
}
}
}
}
return actionSet;
}
private HierarchicalActionSet removeIFthenBlocks(HierarchicalActionSet actionSet){
List<HierarchicalActionSet> subActions = actionSet.getSubActions();
if (subActions.size() == 1){
HierarchicalActionSet subaction = subActions.get(0);
//else,then,block
if(subaction.getAstNodeType().equals("then")|| subaction.getAstNodeType().equals("else")){//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){
List<HierarchicalActionSet> subSubActions = subaction.getSubActions();
if(subSubActions.size() == 1){
HierarchicalActionSet subsubsubAction = subSubActions.get(0);
if(subsubsubAction.getAstNodeType().equals("block")){
List<HierarchicalActionSet> subActions1 = subsubsubAction.getSubActions();
if (subActions1.size() ==1){
HierarchicalActionSet hierarchicalActionSet = subActions1.get(0);
List<Integer> keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, hierarchicalActionSet.getAstNodeType());
if(keysByValue != null && keysByValue.size() ==1){
hierarchicalActionSet.setParent(null);
return removeBlocks(hierarchicalActionSet);
}
}
}
}
}
}
return actionSet;
}
private HierarchicalActionSet createActionSet(Action act, Action parentAct, HierarchicalActionSet parent) {