protected override bool ParseOption(string name, Bpl.CommandLineOptionEngine.CommandLineParseState ps) { switch (name) { case "outdir": if (ps.ConfirmArgumentCount(1)) { outDir = ps.args[ps.i]; } return true; case "minVerify": minVerify = true; return true; default: break; } return base.ParseOption(name, ps); }
protected override bool ParseOption(string name, Bpl.CommandLineOptionEngine.CommandLineParseState ps) { var args = ps.args; // convenient synonym switch (name) { case "dprelude": if (ps.ConfirmArgumentCount(1)) { DafnyPrelude = args[ps.i]; } return true; case "dprint": if (ps.ConfirmArgumentCount(1)) { DafnyPrintFile = args[ps.i]; } return true; case "printMode": if (ps.ConfirmArgumentCount(1)) { if (args[ps.i].Equals("Everything")) { PrintMode = PrintModes.Everything; } else if (args[ps.i].Equals("NoIncludes")) { PrintMode = PrintModes.NoIncludes; } else if (args[ps.i].Equals("NoGhost")) { PrintMode = PrintModes.NoGhost; } else { throw new Exception("Invalid value for printMode"); } } return true; case "rprint": if (ps.ConfirmArgumentCount(1)) { DafnyPrintResolvedFile = args[ps.i]; } return true; case "view": if (ps.ConfirmArgumentCount(1)) { DafnyPrintExportedViews = args[ps.i].Split(',').ToList(); } return true; case "compile": { int compile = 0; if (ps.GetNumericArgument(ref compile, 4)) { // convert option to two booleans Compile = compile != 0; ForceCompile = compile == 2; RunAfterCompile = compile == 3; } return true; } case "dafnyVerify": { int verify = 0; if (ps.GetNumericArgument(ref verify, 2)) { DafnyVerify = verify != 0; // convert to boolean } return true; } case "spillTargetCode": { int spill = 0; if (ps.GetNumericArgument(ref spill, 2)) { SpillTargetCode = spill != 0; // convert to a boolean } return true; } case "out": { if (ps.ConfirmArgumentCount(1)) { DafnyPrintCompiledFile = args[ps.i]; } return true; } case "dafnycc": Dafnycc = true; Induction = 0; Compile = false; UseAbstractInterpretation = false; // /noinfer return true; case "noCheating": { int cheat = 0; // 0 is default, allows cheating if (ps.GetNumericArgument(ref cheat, 2)) { DisallowSoundnessCheating = cheat == 1; } return true; } case "induction": ps.GetNumericArgument(ref Induction, 4); return true; case "inductionHeuristic": ps.GetNumericArgument(ref InductionHeuristic, 7); return true; case "noIncludes": DisallowIncludes = true; return true; case "noNLarith": DisableNLarith = true; this.AddZ3Option("smt.arith.nl=false"); return true; case "autoReqPrint": if (ps.ConfirmArgumentCount(1)) { AutoReqPrintFile = args[ps.i]; } return true; case "noAutoReq": ignoreAutoReq = true; return true; case "allowGlobals": AllowGlobals = true; return true; case "stats": PrintStats = true; return true; case "funcCallGraph": PrintFunctionCallGraph = true; return true; case "warnShadowing": WarnShadowing = true; return true; case "countVerificationErrors": { int countErrors = 1; // defaults to reporting verification errors if (ps.GetNumericArgument(ref countErrors, 2)) { CountVerificationErrors = countErrors == 1; } return true; } case "printTooltips": PrintTooltips = true; return true; case "autoTriggers": { int autoTriggers = 0; if (ps.GetNumericArgument(ref autoTriggers, 2)) { AutoTriggers = autoTriggers == 1; } return true; } case "rewriteFocalPredicates": { int rewriteFocalPredicates = 0; if (ps.GetNumericArgument(ref rewriteFocalPredicates, 2)) { RewriteFocalPredicates = rewriteFocalPredicates == 1; } return true; } case "optimize": { Optimize = true; return true; } case "noIronDafny": { IronDafny = false; return true; } case "ironDafny": { IronDafny = true; return true; } default: break; } // not a Dafny-specific option, so defer to superclass return base.ParseOption(name, ps); }