diff --git a/prism/src/prism/Prism.java b/prism/src/prism/Prism.java index a03d0781..4ce7050f 100644 --- a/prism/src/prism/Prism.java +++ b/prism/src/prism/Prism.java @@ -1424,7 +1424,30 @@ public class Prism extends PrismComponent implements PrismSettingsListener */ public ModulesFile importPepaString(String s) throws PrismException, PrismLangException { - String prismModelString = new PrismLanguageImporter().convert("pepa", s); + File pepaFile = null; + String modelString; + + // create temporary file containing pepa model + try { + pepaFile = File.createTempFile("tempPepa" + System.currentTimeMillis(), ".pepa"); + FileWriter write = new FileWriter(pepaFile); + write.write(s); + write.close(); + } catch (IOException e) { + if (pepaFile != null) + pepaFile.delete(); + throw new PrismException("Couldn't create temporary file for PEPA conversion"); + } + + // compile pepa file to string + try { + modelString = pepa.compiler.Main.compile("" + pepaFile); + } catch (pepa.compiler.InternalError e) { + if (pepaFile != null) + pepaFile.delete(); + throw new PrismException("Could not import PEPA file:\n" + e.getMessage()); + } + // parse string as prism model and return return parseModelString(modelString); }