public int Consult(string fileName) { // string as ISO-style charcode lists or as C# strings consultFileStack.Push(fileName); consultParserStack.Push(Globals.CurrentParser); PrologParser parser = Globals.CurrentParser = new PrologParser(engine); allDiscontiguous = false; try { prevIndex = null; definedInCurrFile.Clear(); isDiscontiguous.Clear(); Uncacheall(); //Globals.ConsultModuleName = null; parser.Prefix = "&program\r\n"; IO.Write("--- Consulting {0} ... ", fileName); parser.LoadFromFile(fileName); IO.WriteLine("{0} lines read", parser.LineCount); InvalidateCrossRef(); } finally { Globals.CurrentParser = consultParserStack.Pop();; //Globals.ConsultModuleName = null; // Currently not used } return(parser.LineCount); }
public int Consult(string fileName) { bool csharpStringsSave = engine.csharpStrings; // string as ISO-style charcode lists or as C# strings PrologParser saveCurrentParser = Globals.CurrentParser; PrologParser parser = Globals.CurrentParser = new PrologParser(engine); allDiscontiguous = false; try { prevIndex = null; definedInCurrFile.Clear(); isDiscontiguous.Clear(); actionWhenUndefined.Clear(); Uncacheall(); Globals.ConsultFileName = fileName.ToLower(); Globals.ConsultModuleName = null; parser.Prefix = "&program\r\n"; IO.Write("--- Consulting {0} ... ", fileName); parser.LoadFromFile(fileName); IO.WriteLine("{0} lines read", parser.LineCount); InvalidateCrossRef(); } finally { Globals.ConsultFileName = null; Globals.ConsultModuleName = null; Globals.CurrentParser = saveCurrentParser; engine.csharpStrings = csharpStringsSave; } return(parser.LineCount); }