From 02d549cbe33252cf76ce88da9435b813c8a57a38 Mon Sep 17 00:00:00 2001 From: Jan Gruteser <jan.gruteser@hhu.de> Date: Tue, 24 Sep 2024 11:58:06 +0200 Subject: [PATCH] some simplifications in BAstCreator --- src/main/java/de/tla2bAst/BAstCreator.java | 75 ++++++++-------------- 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/src/main/java/de/tla2bAst/BAstCreator.java b/src/main/java/de/tla2bAst/BAstCreator.java index 52a39df..05e1092 100644 --- a/src/main/java/de/tla2bAst/BAstCreator.java +++ b/src/main/java/de/tla2bAst/BAstCreator.java @@ -1144,8 +1144,7 @@ public class BAstCreator extends BuiltInOPs case B_OPCODE_setsum: { AGeneralSumExpression sum = new AGeneralSumExpression(); String variableName = "t_"; // TODO unused identifier name - List<PExpression> exprList = createPexpressionList(createIdentifierNode(variableName)); - sum.setIdentifiers(exprList); + sum.setIdentifiers(Collections.singletonList(createIdentifierNode(variableName))); AMemberPredicate memberPredicate = new AMemberPredicate(); memberPredicate.setLeft(createIdentifierNode(variableName)); memberPredicate.setRight(visitExprOrOpArgNodeExpression(opApplNode.getArgs()[0])); @@ -1166,20 +1165,16 @@ public class BAstCreator extends BuiltInOPs private <T extends PositionedNode> T createPositionedNode(T positionedNode, SemanticNode semanticNode) { Location location = semanticNode.getTreeNode().getLocation(); - SourcePosition startPos = new SourcePosition(location.beginLine(), location.beginColumn()); - SourcePosition endPos = new SourcePosition(location.endLine(), location.endColumn()); - positionedNode.setStartPos(startPos); - positionedNode.setEndPos(endPos); + positionedNode.setStartPos(new SourcePosition(location.beginLine(), location.beginColumn())); + positionedNode.setEndPos(new SourcePosition(location.endLine(), location.endColumn())); sourcePosition.add(positionedNode); return positionedNode; } private void setPosition(PositionedNode positionNode, OpApplNode opApplNode) { Location location = opApplNode.getTreeNode().getLocation(); - SourcePosition startPos = new SourcePosition(location.beginLine(), location.beginColumn()); - SourcePosition endPos = new SourcePosition(location.endLine(), location.endColumn()); - positionNode.setStartPos(startPos); - positionNode.setEndPos(endPos); + positionNode.setStartPos(new SourcePosition(location.beginLine(), location.beginColumn())); + positionNode.setEndPos(new SourcePosition(location.endLine(), location.endColumn())); sourcePosition.add(positionNode); } @@ -1570,18 +1565,12 @@ public class BAstCreator extends BuiltInOPs List<PRecEntry> recList = new ArrayList<>(); for (int i = 0; i < struct.getFields().size(); i++) { String fieldName = struct.getFields().get(i); - AIdentifierExpression field = createIdentifierNode(fieldName); ARecEntry rec = new ARecEntry(); - rec.setIdentifier(field); + rec.setIdentifier(createIdentifierNode(fieldName)); if (pairTable.containsKey(fieldName)) { - - ACoupleExpression couple = new ACoupleExpression(); - List<PExpression> coupleList = new ArrayList<>(); - coupleList.add(new ABooleanTrueExpression()); - coupleList.add(pairTable.get(fieldName)); - couple.setList(coupleList); - ASetExtensionExpression set = new ASetExtensionExpression(createPexpressionList(couple)); - rec.setValue(set); + ACoupleExpression couple = new ACoupleExpression(Arrays.asList( + new ABooleanTrueExpression(), pairTable.get(fieldName))); + rec.setValue(new ASetExtensionExpression(Collections.singletonList(couple))); } else { AEmptySetExpression emptySet = new AEmptySetExpression(); rec.setValue(emptySet); @@ -1626,7 +1615,7 @@ public class BAstCreator extends BuiltInOPs rcdSelect.setIdentifier(createIdentifierNode(stringNode.getRep().toString())); AFunctionExpression funcCall = new AFunctionExpression(); funcCall.setIdentifier(rcdSelect); - funcCall.setParameters(createPexpressionList(new ABooleanTrueExpression())); + funcCall.setParameters(Collections.singletonList(new ABooleanTrueExpression())); return funcCall; } else { ARecordFieldExpression rcdSelect = new ARecordFieldExpression(); @@ -2226,36 +2215,31 @@ public class BAstCreator extends BuiltInOPs if (params[i].length == 1) { // one-tuple is handled is translated as a sequence FormalParamNode param = params[i][0]; - AMemberPredicate member = new AMemberPredicate(); - ASequenceExtensionExpression seq = new ASequenceExtensionExpression(); - List<PExpression> list = new ArrayList<>(); - list.add(createIdentifierNode(param)); - seq.setExpression(list); - member.setLeft(seq); - member.setRight(visitExprNodeExpression(in[i])); - predList.add(member); + predList.add(new AMemberPredicate( + new ASequenceExtensionExpression(Collections.singletonList(createIdentifierNode(param))), + visitExprNodeExpression(in[i])) + ); } else { ArrayList<PExpression> list = new ArrayList<>(); for (int j = 0; j < params[i].length; j++) { - FormalParamNode param = params[i][j]; - list.add(createIdentifierNode(param)); + list.add(createIdentifierNode(params[i][j])); } - AMemberPredicate member = new AMemberPredicate(); - member.setLeft(new ACoupleExpression(list)); - member.setRight(visitExprNodeExpression(in[i])); - predList.add(member); + predList.add(new AMemberPredicate( + new ACoupleExpression(list), + visitExprNodeExpression(in[i]) + )); } } else { for (int j = 0; j < params[i].length; j++) { - AMemberPredicate member = new AMemberPredicate(); - member.setLeft(createIdentifierNode(params[i][j])); - member.setRight(visitExprNodeExpression(in[i])); - predList.add(member); + predList.add(new AMemberPredicate( + createIdentifierNode(params[i][j]), + visitExprNodeExpression(in[i]) + )); } } } - return createConjunction(predList); + return createPositionedNode(createConjunction(predList), n); } public PPredicate visitBoundsOfFunctionsVariables(OpApplNode n) { @@ -2371,16 +2355,7 @@ public class BAstCreator extends BuiltInOPs } public static List<TIdentifierLiteral> createTIdentifierLiteral(String name) { - List<TIdentifierLiteral> list = new ArrayList<>(); - TIdentifierLiteral tid = new TIdentifierLiteral(name); - list.add(tid); - return list; - } - - public static List<PExpression> createPexpressionList(PExpression expr) { - ArrayList<PExpression> list = new ArrayList<>(); - list.add(expr); - return list; + return Collections.singletonList(new TIdentifierLiteral(name)); } public Start getStartNode() { -- GitLab