Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/UsageAnalyzer.java +78 −7 Original line number Diff line number Diff line Loading @@ -849,10 +849,73 @@ System.out.println("Analyzing function"); } private void analyzeOperators(TTCN3Module module, Map<String, Long> output) { //Shift and rotate operators for(ShiftExpression exp : EcoreUtil2.getAllContentsOfType(module, ShiftExpression.class)) { String operation = "UnkownShiftOperation"; switch(exp.getOperator()) { for(SingleExpression s : EcoreUtil2.getAllContentsOfType(module, SingleExpression.class)) { if(s.getOperator() == null) continue; String operation = "Unkown"; switch(s.getOperator()) { case "+": operation = "Add"; break; case "-": operation = "Subtract"; break; case "&": operation = "Concat"; break; case "*": operation = "Multiply"; break; case "/": operation = "Divide"; break; case "mod": operation = "Modulo"; break; case "rem": operation = "Remainder"; break; case "<": operation = "LessThan"; break; case ">": operation = "GreaterThan"; break; case "<=": operation = "LessOrEqual"; break; case ">=": operation = "GreaterOrEqual"; break; case "==": operation = "Equal"; break; case "!=": operation = "NotEqual"; break; case "and": operation = "And"; break; case "or": operation = "Or"; break; case "not": operation = "Not"; break; case "xor": operation = "Xor"; break; case "and4b": operation = "BAnd"; break; case "or4b": operation = "BOr"; break; case "not4b": operation = "BNot"; break; case "xor4b": operation = "BXor"; break; case "<<": operation = "LeftShift"; break; Loading @@ -866,8 +929,9 @@ System.out.println("Analyzing function"); operation = "RightRotate"; break; default: System.out.println("Unkown Shift operation found"); System.out.println(s.getOperator()); } addToOutput(output, operation); } Loading @@ -890,8 +954,11 @@ System.out.println("Analyzing function"); int groups = 0; for(ModuleDefinition def : module.getDefs().getDefinitions()) { if(def.getDef().getClass() == GroupDefImpl.class) { GroupDef g = (GroupDef) def.getDef(); groups++; sum += checkRecursionDepth((GroupDef) def.getDef()); int d = checkRecursionDepth(g); sum += d; addToOutput(output, "GroupDepth_" + d); } } addNToOutput(output, "TopLevel_GroupDef", groups); Loading @@ -900,7 +967,11 @@ System.out.println("Analyzing function"); //analyze group content for(GroupDef group : EcoreUtil2.getAllContentsOfType(module, GroupDef.class)) { if(group.getList() == null) continue; EcoreUtil2.getAllContainers(group); if(group.getList() == null) addToOutput(output, "GroupSize_0"); else addToOutput(output, "GroupSize_" + (group.getList().getDefinitions().size())); for(ModuleDefinition def : group.getList().getDefinitions()) { String name = def.getDef().getClass().getSimpleName(); addToOutput(output, "InGroup_" + name.substring(0, name.length()-4)); Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +12 −12 Original line number Diff line number Diff line Loading @@ -1146,43 +1146,43 @@ BooleanExpression: SingleExpression; SingleExpression returns SingleExpression: XorExpression ({SingleExpression.left=current} OR right=XorExpression)*; XorExpression ({SingleExpression.left=current} operator=OR right=XorExpression)*; XorExpression returns SingleExpression: AndExpression ({XorExpression.left=current} XOR right=AndExpression)*; AndExpression ({XorExpression.left=current} operator=XOR right=AndExpression)*; AndExpression returns SingleExpression: NotExpression ({AndExpression.left=current} AND right=NotExpression)*; NotExpression ({AndExpression.left=current} operator=AND right=NotExpression)*; NotExpression returns SingleExpression: NOT? EqualExpression; operator=NOT? exp=EqualExpression; EqualExpression returns SingleExpression: RelExpression ({EqualExpression.left=current} EqualOp right=RelExpression)*; RelExpression ({EqualExpression.left=current} operator=EqualOp right=RelExpression)*; RelExpression returns SingleExpression: ShiftExpression ({RelExpression.left=current} RelOp right=ShiftExpression)* | CompoundExpression; ShiftExpression ({RelExpression.left=current} operator=RelOp right=ShiftExpression)* | CompoundExpression; ShiftExpression returns SingleExpression: BitOrExpression ({ShiftExpression.left=current} operator=ShiftOp right=BitOrExpression)*; BitOrExpression returns SingleExpression: BitXorExpression ({BitOrExpression.left=current} OR4B right=BitXorExpression)*; BitXorExpression ({BitOrExpression.left=current} operator=OR4B right=BitXorExpression)*; BitXorExpression returns SingleExpression: BitAndExpression ({BitXorExpression.left=current} XOR4B right=BitAndExpression)*; BitAndExpression ({BitXorExpression.left=current} operator=XOR4B right=BitAndExpression)*; BitAndExpression returns SingleExpression: BitNotExpression ({BitAndExpression.left=current} AND4B right=BitNotExpression)*; BitNotExpression ({BitAndExpression.left=current} operator=AND4B right=BitNotExpression)*; BitNotExpression returns SingleExpression: NOT4B? AddExpression; operator=NOT4B? exp=AddExpression; AddExpression returns SingleExpression: MulExpression ({AddExpression.left=current} AddOp right=MulExpression)*; MulExpression ({AddExpression.left=current} operator=AddOp right=MulExpression)*; MulExpression returns SingleExpression: UnaryExpression ({MulExpression.left=current} MultiplyOp right=UnaryExpression)* | CompoundExpression; UnaryExpression ({MulExpression.left=current} operator=MultiplyOp right=UnaryExpression)* | CompoundExpression; UnaryExpression returns SingleExpression: UnaryOp? Primary; Loading Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/UsageAnalyzer.java +78 −7 Original line number Diff line number Diff line Loading @@ -849,10 +849,73 @@ System.out.println("Analyzing function"); } private void analyzeOperators(TTCN3Module module, Map<String, Long> output) { //Shift and rotate operators for(ShiftExpression exp : EcoreUtil2.getAllContentsOfType(module, ShiftExpression.class)) { String operation = "UnkownShiftOperation"; switch(exp.getOperator()) { for(SingleExpression s : EcoreUtil2.getAllContentsOfType(module, SingleExpression.class)) { if(s.getOperator() == null) continue; String operation = "Unkown"; switch(s.getOperator()) { case "+": operation = "Add"; break; case "-": operation = "Subtract"; break; case "&": operation = "Concat"; break; case "*": operation = "Multiply"; break; case "/": operation = "Divide"; break; case "mod": operation = "Modulo"; break; case "rem": operation = "Remainder"; break; case "<": operation = "LessThan"; break; case ">": operation = "GreaterThan"; break; case "<=": operation = "LessOrEqual"; break; case ">=": operation = "GreaterOrEqual"; break; case "==": operation = "Equal"; break; case "!=": operation = "NotEqual"; break; case "and": operation = "And"; break; case "or": operation = "Or"; break; case "not": operation = "Not"; break; case "xor": operation = "Xor"; break; case "and4b": operation = "BAnd"; break; case "or4b": operation = "BOr"; break; case "not4b": operation = "BNot"; break; case "xor4b": operation = "BXor"; break; case "<<": operation = "LeftShift"; break; Loading @@ -866,8 +929,9 @@ System.out.println("Analyzing function"); operation = "RightRotate"; break; default: System.out.println("Unkown Shift operation found"); System.out.println(s.getOperator()); } addToOutput(output, operation); } Loading @@ -890,8 +954,11 @@ System.out.println("Analyzing function"); int groups = 0; for(ModuleDefinition def : module.getDefs().getDefinitions()) { if(def.getDef().getClass() == GroupDefImpl.class) { GroupDef g = (GroupDef) def.getDef(); groups++; sum += checkRecursionDepth((GroupDef) def.getDef()); int d = checkRecursionDepth(g); sum += d; addToOutput(output, "GroupDepth_" + d); } } addNToOutput(output, "TopLevel_GroupDef", groups); Loading @@ -900,7 +967,11 @@ System.out.println("Analyzing function"); //analyze group content for(GroupDef group : EcoreUtil2.getAllContentsOfType(module, GroupDef.class)) { if(group.getList() == null) continue; EcoreUtil2.getAllContainers(group); if(group.getList() == null) addToOutput(output, "GroupSize_0"); else addToOutput(output, "GroupSize_" + (group.getList().getDefinitions().size())); for(ModuleDefinition def : group.getList().getDefinitions()) { String name = def.getDef().getClass().getSimpleName(); addToOutput(output, "InGroup_" + name.substring(0, name.length()-4)); Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +12 −12 Original line number Diff line number Diff line Loading @@ -1146,43 +1146,43 @@ BooleanExpression: SingleExpression; SingleExpression returns SingleExpression: XorExpression ({SingleExpression.left=current} OR right=XorExpression)*; XorExpression ({SingleExpression.left=current} operator=OR right=XorExpression)*; XorExpression returns SingleExpression: AndExpression ({XorExpression.left=current} XOR right=AndExpression)*; AndExpression ({XorExpression.left=current} operator=XOR right=AndExpression)*; AndExpression returns SingleExpression: NotExpression ({AndExpression.left=current} AND right=NotExpression)*; NotExpression ({AndExpression.left=current} operator=AND right=NotExpression)*; NotExpression returns SingleExpression: NOT? EqualExpression; operator=NOT? exp=EqualExpression; EqualExpression returns SingleExpression: RelExpression ({EqualExpression.left=current} EqualOp right=RelExpression)*; RelExpression ({EqualExpression.left=current} operator=EqualOp right=RelExpression)*; RelExpression returns SingleExpression: ShiftExpression ({RelExpression.left=current} RelOp right=ShiftExpression)* | CompoundExpression; ShiftExpression ({RelExpression.left=current} operator=RelOp right=ShiftExpression)* | CompoundExpression; ShiftExpression returns SingleExpression: BitOrExpression ({ShiftExpression.left=current} operator=ShiftOp right=BitOrExpression)*; BitOrExpression returns SingleExpression: BitXorExpression ({BitOrExpression.left=current} OR4B right=BitXorExpression)*; BitXorExpression ({BitOrExpression.left=current} operator=OR4B right=BitXorExpression)*; BitXorExpression returns SingleExpression: BitAndExpression ({BitXorExpression.left=current} XOR4B right=BitAndExpression)*; BitAndExpression ({BitXorExpression.left=current} operator=XOR4B right=BitAndExpression)*; BitAndExpression returns SingleExpression: BitNotExpression ({BitAndExpression.left=current} AND4B right=BitNotExpression)*; BitNotExpression ({BitAndExpression.left=current} operator=AND4B right=BitNotExpression)*; BitNotExpression returns SingleExpression: NOT4B? AddExpression; operator=NOT4B? exp=AddExpression; AddExpression returns SingleExpression: MulExpression ({AddExpression.left=current} AddOp right=MulExpression)*; MulExpression ({AddExpression.left=current} operator=AddOp right=MulExpression)*; MulExpression returns SingleExpression: UnaryExpression ({MulExpression.left=current} MultiplyOp right=UnaryExpression)* | CompoundExpression; UnaryExpression ({MulExpression.left=current} operator=MultiplyOp right=UnaryExpression)* | CompoundExpression; UnaryExpression returns SingleExpression: UnaryOp? Primary; Loading