public Boolean parse_file(string filename, string methodname) { // init parser arguments DafnyFile usedFile = new DafnyFile(filename); var files = new List <DafnyFile>(); files.Add(usedFile); ErrorReporter r = new ConsoleErrorReporter(); Microsoft.Dafny.Program ret; DafnyOptions.Install(new DafnyOptions(r)); // run parser string err = Main.ParseCheck(files, filename, r, out ret); //if (err != null) //{ // return false; //} // program parsed well dafny_program = ret; // list of all methods var decls = ret.Modules(); List <TopLevelDecl> a = new List <TopLevelDecl>(); foreach (Microsoft.Dafny.ModuleDefinition dec in decls) { a.AddRange(dec.TopLevelDecls); } // look for methodname var callables = ModuleDefinition.AllCallables(a); foreach (Microsoft.Dafny.ICallable method in callables) { if (method is Microsoft.Dafny.Method) { Microsoft.Dafny.Method m = (Microsoft.Dafny.Method)method; if (m.Name == methodname) { currentMethod = m; return(true); } } } return(false); }
public DafnyCodeParser() { dafny_program = null; currentMethod = null; }