public static void main(String[] args) { try { Scanner consoleInput = new Scanner(System.in); System.out.println("Enter file name: "); String fileName = consoleInput.next(); if (!fileName.endsWith(".t")) { System.out.println("Expecting a LOGO file"); return; } Root program = Parser.parse(Lexer.tokenise(FileManager.contentsOfFile(fileName))); System.out.println("Enter output file name"); String outFileName = consoleInput.next(); if (!outFileName.endsWith(".ps") && !outFileName.endsWith(".eps")) { outFileName += ".ps"; } String output = CodeGenerator.generateCodeText(program); if (ErrorLog.containsErrors()) { ErrorLog.displayErrors(); return; } else { FileManager.writeStringToFile(output, outFileName); } } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (IOException IO) { System.out.println(IO.getMessage()); } }
public void deOrbit() { if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesOrbitOps) { assert spacecraft.readyForDeorbit() : errors.last(); internalState = cevStatesEntry; return; } if (internalEarthOrbitState == earthOrbitStatesSafeHold) { assert spacecraft.readyForDeorbit() : errors.last(); internalState = cevStatesEntry; return; } } assert false; }
// @Params("<5000|120000|200000>, <true|false>") -not yet in the model public void abort(int altitude, boolean controlMotorFired) { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesFirstStage) { spacecraft.doStage1Abort(altitude, controlMotorFired); if (altitude <= 120000) { if (controlMotorFired) { internalAscentState = ascentStatesAbortLowActiveLAS; } else { internalAscentState = ascentStatesAbortPassiveLAS; } } if (altitude >= 120000) { // <ERR> interval overlap -> ambiguity // TODO: Are this errors supposed to be found? // Should this reamin or not? internalAscentState = ascentStatesAbortHighActiveLAS; // <ERR> forgotten controlMotor branch } return; } if (internalAscentState == ascentStatesSecondStage) { spacecraft.doStage2Abort(controlMotorFired); if (controlMotorFired) { internalAscentState = ascentStatesAbortHighActiveLAS; } else { internalAscentState = ascentStatesAbortPassiveLAS; } return; } } // assert hasNextState() : errors.log("abort command did not enter abort state"); // TODO: What does hasNextState? assert false : errors.log("abort command did not enter abort state"); }
public void teiBurn() { if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesLunarOrbit) { assert spacecraft.readyForTeiBurn() : errors.last(); internalState = cevStatesTransitMoonEarth; } } assert false; }
public void tliBurn() { if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesOrbitOps) { assert spacecraft.readyForTliBurn() : errors.last(); internalState = cevStatesTransitEarthMoon; return; } } assert false; }
public void lsamRendezvous() { if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesOrbitOps) { assert spacecraft.readyForLSAMrendezvous() : errors.last(); spacecraft.doLSAMrendezvous(); return; } } assert false; }
public void eiBurn(boolean cmImbalance, boolean rcsFailure) { if (internalState == cevStatesTransitMoonEarth) { // spacecraft should now only consist of CM assert spacecraft.readyForEiBurn() : errors.last(); spacecraft.doEiBurn(cmImbalance, rcsFailure); if (cmImbalance) { internalState = cevStatesEntry; internalEntryState = entryStatesAbortEntryBallistic; } else if (rcsFailure) { internalState = cevStatesEntry; internalEntryState = entryStatesAbortEntryFixedBank; } else { internalState = cevStatesEntry; } return; } assert false; }
public void completion() { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesHoldLaunch) { internalState = cevStatesEndState; return; } if (internalAscentState == ascentStatesPadAbort) { internalState = cevStatesEndState; return; } if (internalAscentState == ascentStatesAbortPassiveLAS) { spacecraft.doLowPassiveAbort(); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } if (internalAscentState == ascentStatesAbortLowActiveLAS) { assert failures.noLAS_CNTRLfailure() : errors.log("active LAS with failed control motor"); spacecraft.doLowActiveAbort(); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } if (internalAscentState == ascentStatesAbortHighActiveLAS) { assert failures.noLAS_CNTRLfailure() : errors.log("active LAS with failed control motor"); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } } if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesInsertion) { if (failures.noEARTH_SENSORfailure()) { internalEarthOrbitState = earthOrbitStatesOrbitOps; } else { internalEarthOrbitState = earthOrbitStatesSafeHold; // <ERR> never reached } return; } } if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesInsertion) { internalLunarOpsState = lunarOpsStatesLunarOrbit; return; } if (internalLunarOpsState == lunarOpsStatesLunarLanding) { internalLunarOpsState = lunarOpsStatesLunarOrbit; } } if (internalState == cevStatesEntry) { if (internalEntryState == entryStatesEntryInterface) { internalEntryState = entryStatesNominalEntry; return; } if (internalEntryState == entryStatesNominalEntry) { internalEntryState = entryStatesChuteSequence; return; } if (internalEntryState == entryStatesChuteSequence) { assert spacecraft.readyForChuteSequence() : errors.last(); internalEntryState = entryStatesLanding; return; } if (internalEntryState == entryStatesLanding) { internalState = cevStatesEndState; return; } if (internalEntryState == entryStatesAbortEntryBallistic) { internalEntryState = entryStatesChuteSequence; return; } if (internalEntryState == entryStatesAbortEntryFixedBank) { internalEntryState = entryStatesChuteSequence; return; } if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesLunarLanding) { if (internalLunarLandingLSAMState == lunarLandingLSAMStatesLunarDescent) { internalLunarLandingLSAMState = lunarLandingLSAMStatesSurfaceOps; return; } } } } assert false; }