From 6f89dc67cf3e33472be042389866acadcf56cfbd Mon Sep 17 00:00:00 2001 From: Fabian Vu <fabian.vu@hhu.de> Date: Wed, 8 Jan 2025 13:47:25 +0100 Subject: [PATCH] Invoke machine with external functions with correct parameters --- .../codegenerator/generators/DeclarationGenerator.java | 6 ++++++ .../resources/de/hhu/stups/codegenerator/JavaTemplate.stg | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/hhu/stups/codegenerator/generators/DeclarationGenerator.java b/src/main/java/de/hhu/stups/codegenerator/generators/DeclarationGenerator.java index c12e28eac..807f0a584 100644 --- a/src/main/java/de/hhu/stups/codegenerator/generators/DeclarationGenerator.java +++ b/src/main/java/de/hhu/stups/codegenerator/generators/DeclarationGenerator.java @@ -8,6 +8,7 @@ import de.prob.parser.ast.nodes.DeclarationNode; import de.prob.parser.ast.nodes.EnumeratedSetDeclarationNode; import de.prob.parser.ast.nodes.MachineNode; import de.prob.parser.ast.nodes.MachineReferenceNode; +import de.prob.parser.ast.nodes.OperationNode; import de.prob.parser.ast.types.CoupleType; import de.prob.parser.ast.types.SetType; import org.stringtemplate.v4.ST; @@ -144,6 +145,11 @@ public class DeclarationGenerator { ST declaration = currentGroup.getInstanceOf("include_declaration"); String machine = reference.getMachineName(); String referenceName = reference.getPrefix() != null ? reference.getPrefix() : reference.getMachineName(); + boolean hasExternals = reference.getMachineNode().getOperations() + .stream() + .map(OperationNode::getName) + .anyMatch(op -> op.startsWith("EXTERNAL_")); + TemplateHandler.add(declaration, "hasExternals", hasExternals); TemplateHandler.add(declaration, "type", nameHandler.handle(machine)); TemplateHandler.add(declaration, "identifier", nameHandler.handleIdentifier(referenceName, NameHandler.IdentifierHandlingEnum.MACHINES)); return declaration.render(); diff --git a/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg b/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg index c140af61e..c1a28afcb 100644 --- a/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg +++ b/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg @@ -590,8 +590,12 @@ bool() ::= << BUtils.BOOL >> -include_declaration(type, identifier) ::= << +include_declaration(hasExternals, type, identifier) ::= << +<if(hasExternals)> +private <declaration(type, identifier)> = new <type>(new <type>_EXTERNALS()); +<else> private <declaration(type, identifier)> = new <type>(); +<endif> >> global_declaration(type, identifier) ::= << -- GitLab