public Program ParseAndTypeCheck(bool runResolver) { var errorReporter = new ConsoleErrorReporter(); var module = new LiteralModuleDecl(new DefaultModuleDecl(), null); var builtIns = new BuiltIns(); var parseErrors = new Errors(errorReporter); var errorCount = Parser.Parse(_snapshot.GetText(), _filename, _filename, module, builtIns, parseErrors); var errString = Main.ParseIncludes(module, builtIns, new List <string>(), parseErrors); if (errorCount != 0 || errString != null) { return(null); } var program = new Program(_filename, module, builtIns, errorReporter); if (!runResolver) { return(program); } var r = new Resolver(program); r.ResolveProgram(program); return(errorReporter.Count(ErrorLevel.Error) == 0 ? program : null); }
/// <summary> /// Parse a string read (from a certain file) to a Dafny Program /// </summary> public static Program?Parse(string source, string fileName = "") { ModuleDecl module = new LiteralModuleDecl(new DefaultModuleDecl(), null); var builtIns = new BuiltIns(); var reporter = new ConsoleErrorReporter(); var success = Parser.Parse(source, fileName, fileName, null, module, builtIns, new Errors(reporter)) == 0 && Microsoft.Dafny.Main.ParseIncludes(module, builtIns, new List <string>(), new Errors(reporter)) == null; Program?program = null; if (success) { program = new Program(fileName, module, builtIns, reporter); } new Resolver(program).ResolveProgram(program); return(program); }
IEnumerable <BoogieProgram> GetBoogie(string dafnyProgramText) { var module = new LiteralModuleDecl(new DefaultModuleDecl(), null); var fullFilePath = "foo"; Microsoft.Dafny.Type.ResetScopes(); var builtIns = new BuiltIns(); var errorReporter = new ConsoleErrorReporter(); var parseResult = Parser.Parse(dafnyProgramText, fullFilePath, "foo", module, builtIns, errorReporter); Assert.Equal(0, parseResult); var dafnyProgram = new Microsoft.Dafny.Program(fullFilePath, module, builtIns, errorReporter); Main.Resolve(dafnyProgram, errorReporter); var boogiePrograms = Translator.Translate(dafnyProgram, errorReporter).Select(t => t.Item2); return(boogiePrograms); }
public static int Parse_Verbatim_Block(string verbatim_block, string filename, int line, Dafny.ModuleDecl module, Dafny.BuiltIns builtIns, bool verifyThisFile = true) { Contract.Requires(verbatim_block != null); Contract.Requires(filename != null); Contract.Requires(module != null); Dafny.ErrorReporter reporter = new Dafny.ConsoleErrorReporter(); Dafny.Errors errors = new Dafny.Errors(reporter); byte[] buffer = cce.NonNull(System.Text.UTF8Encoding.Default.GetBytes(verbatim_block)); MemoryStream ms = new MemoryStream(buffer, false); string fullFilename = Path.GetFullPath(filename); Dafny.Scanner scanner = new Dafny.Scanner(ms, errors, fullFilename, filename, line); Dafny.Parser parser = new Dafny.Parser(scanner, errors, null, module, builtIns, verifyThisFile); parser.Parse(); return(parser.errors.ErrorCount); }