Blame view
circus/src/jcircus/benchmarking/JCircusControllerBench.java
5.18 KB
8d0dc533f
![]() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
package jcircus.benchmarking; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import net.sourceforge.czt.circus.util.Factory; import net.sourceforge.czt.typecheck.z.ErrorAnn; import net.sourceforge.czt.z.ast.Expr; import net.sourceforge.czt.z.ast.RefExpr; import net.sourceforge.czt.z.ast.Spec; import jcircus.JCircusController; import jcircus.JCircusControllerFrame; import jcircus.exceptions.FailParsingException; import jcircus.exceptions.FailTranslationException; import jcircus.exceptions.FailTypeCheckingException; import jcircus.exceptions.JCircusException; import jcircus.exceptions.TranslationCancelledException; import jcircus.gui.JCircusFrame; import jcircus.gui.ParametersDialog; import jcircus.parallelism.ProcHiddenFromGUIEnv; import jcircus.translator.ProcInfoUpdater; import jcircus.translator.Translator2Java; import jcircus.util.Constants; import jcircus.util.Error; import jcircus.util.MathToolkitConstants; import jcircus.util.ProcInfo; public class JCircusControllerBench extends JCircusController { Spec spec = null; JCircusFrame _jCircusFrame; private boolean createMain = false; public void setCreateMain (String c) { if (c.equals("true")) createMain = true; else { createMain = false; } } public JCircusControllerBench () { _jCircusFrame = new JCircusFrame(JCircusControllerBench.this); } protected void translate2Java (String projectDir, String projectName, Spec spec, String compl, boolean useBarriers, boolean parallelism, boolean bench) throws FailTranslationException, TranslationCancelledException, JCircusException { List <ProcInfo> procInfoList = new ArrayList <ProcInfo> (); ProcHiddenFromGUIEnv prochid = new ProcHiddenFromGUIEnv (); /*ProcInfoUpdater.initProcInfoAndCreateMainEnv (_jCircusFrame.getProcCreateMainEnv(), procInfoList, spec, parallelism, createMain); if (!createMain) { _jCircusFrame.promptForMainProcessesPCME (procInfoList); }*/ _translator = new Translator2Java(projectDir, projectName, spec, compl, useBarriers, parallelism, bench, _jCircusFrame/*.getProcCreateMainEnv()*/, createMain); _translator.translate(true); procInfoList = _translator.getProcInfoList(); /*if (!createMain) _jCircusFrame.promptForMainProcesses(procInfoList);*/ for (int i = 0; i < procInfoList.size(); i++) { ProcInfo procInfo = procInfoList.get(i); if (createMain) { procInfo.setCreateMain(true); } if (procInfo.getCreateMain() == true && procInfo.getParameters() != null && !procInfo.getParameters().isEmpty() ) { if (!createMain) _jCircusFrame.promptForParameters(procInfo); } } // Create the source code files _translator.createSources(); System.out.println ("Time Millis FINAL ::: " + System.currentTimeMillis()); } protected void reportMessage (String message) { //_jCircusFrame.reportMessage(message); } /** * */ protected void reportParsingErrors(List<String> errors) { String message = parsingErrorMessage(errors); reportMessage(message); } /** * */ protected void reportTypeCheckingErrors(List<ErrorAnn> errors) { String message = typeCheckingErrorMessage(errors); reportMessage(message); } /** * */ protected void reportTranslationErrors(List<Error> errors) { String message = translationErrorMessage(errors); reportMessage(message); } public String codeForParameter(String expression, Expr typeExpr) throws FailParsingException, FailTypeCheckingException { String code = ""; // For the moment, typeExpr will be always a reference. This will be // changed in the future. Probably this method will receive the actual // Type, instead of the type expression. assert(typeExpr instanceof RefExpr); String typeExprSt = ((RefExpr) typeExpr).getName().toString();//.getRefName().toString(); if (typeExprSt.equals(MathToolkitConstants.NAT) || typeExprSt.equals(MathToolkitConstants.NUM) || typeExprSt.equals(MathToolkitConstants.ARITHMOS)) { // Number try { // Simulate parsing/typeChecking here int number = Integer.parseInt(expression); code = "new " + Constants.CLS_CIRCNUM + "(" + number + ")"; } catch (NumberFormatException nfe) { // Error List<String> errors = new Factory().list("Expression is not a number."); throw new FailParsingException(errors); } } else { if (_translator.getEnvironment().isElementFreeType(typeExprSt, expression)) { // Simulate parsing/typeChecking here code = "new " + typeExprSt + "(" + typeExprSt + "." + expression + ")"; } else { // Error List<String> errors = new Factory().list("Expression is not an element of free type."); throw new FailParsingException(errors); } } return code; } /** * Cancel the translation. */ public void cancelTranslation () throws TranslationCancelledException { throw new TranslationCancelledException(); } } |