protected virtual PrologCompilerResults FromFile(PrologCompilerParameters options, string fileName) { PrologCompilerResults results = new PrologCompilerResults(); PrologCodeParser parser = new PrologCodeParser(); PrologCodeUnit unit = new PrologCodeUnit(); try { StreamReader reader = new StreamReader(fileName); unit = parser.Parse(reader); } catch (FileNotFoundException) { results.Errors.Add(new PrologCompilerError("P0008", "Input file not found.", fileName, false, 0, 0)); return(results); } return(FromUnit(options, unit)); }
private void GetFile(string filename, ref string expected, ref string result) { StreamReader sr = new StreamReader(filename); PrologCodeParser parser = new PrologCodeParser(); parser.Scanner = new PrologScanner(sr); PrologCodeTerm term = parser.ConvertBinaryTreeToCodeDOM(parser.Term(1200)); sr.Close(); StreamReader codefile = new StreamReader(filename); string originalCode = codefile.ReadLine(); codefile.Close(); string exp = originalCode.Replace(" ", "").Replace(".", ""); string res = term.ToString().Replace(" ", "").Replace(".", ""); expected = exp; result = res; }
PrologCompilerResults IPrologCompiler.CompileAbstractCodeFromFile(PrologCompilerParameters p, string fileName) { PrologCompilerResults results = new PrologCompilerResults(); PrologCodeParser parser = new PrologCodeParser(); PrologCodeUnit unit = new PrologCodeUnit(); try { StreamReader reader = new StreamReader(fileName); unit = parser.Parse(reader); /* Get errors after parsing */ results.Errors = parser.Errors; } catch (FileNotFoundException) { results.Errors.Add(new PrologCompilerError("P0008", "Input file not found.", fileName, false, 0, 0)); return(results); } results.AbstractInstructions = new ArrayList(); GenerateCodeFromUnit(unit, results.AbstractInstructions); /* patch predicates */ //PatchPredicates(results.AbstractInstructions, GetPredicateAddresses(results.AbstractInstructions)); /* Save foreign methods */ //results.ForeignMethods = GetForeignMethods(unit.Methods); /* save namespaces */ results.Namespaces = unit.Namespaces; /* save assembly files */ results.AssemblyFiles = unit.AssemblyFiles; /* return results */ return(results); }
PrologCompilerResults IPrologCompiler.CompileAbstractCodeFromFile(PrologCompilerParameters p, string fileName) { PrologCompilerResults results = new PrologCompilerResults(); PrologCodeParser parser = new PrologCodeParser(); PrologCodeUnit unit = new PrologCodeUnit(); try { StreamReader reader = new StreamReader(fileName); unit = parser.Parse(reader); /* Get errors after parsing */ results.Errors = parser.Errors; } catch (FileNotFoundException) { results.Errors.Add(new PrologCompilerError("P0008", "Input file not found.", fileName, false, 0, 0)); return results; } results.AbstractInstructions = new ArrayList(); GenerateCodeFromUnit(unit, results.AbstractInstructions); /* patch predicates */ //PatchPredicates(results.AbstractInstructions, GetPredicateAddresses(results.AbstractInstructions)); /* Save foreign methods */ //results.ForeignMethods = GetForeignMethods(unit.Methods); /* save namespaces */ results.Namespaces = unit.Namespaces; /* save assembly files */ results.AssemblyFiles = unit.AssemblyFiles; /* return results */ return results; }
protected virtual PrologCompilerResults FromFile(PrologCompilerParameters options, string fileName) { PrologCompilerResults results = new PrologCompilerResults(); PrologCodeParser parser = new PrologCodeParser(); PrologCodeUnit unit = new PrologCodeUnit(); try { StreamReader reader = new StreamReader(fileName); unit = parser.Parse(reader); } catch (FileNotFoundException) { results.Errors.Add(new PrologCompilerError("P0008", "Input file not found.", fileName, false, 0, 0)); return results; } return FromUnit(options, unit); }
public void Parse_Fact_no_Args() { // Try to parse 'predicate.' Write("factnoargs.txt", "predicate."); StreamReader sr = new StreamReader("C:\\factnoargs.txt"); PrologCodeParser parser = new PrologCodeParser(); parser.Scanner = new PrologScanner(sr); BinaryTree ast = parser.Term(1200); sr.Close(); // Expect: BinaryTree("predicate", null, null, null); Assert.AreEqual("predicate", ast.Name); Assert.IsNull(ast.Left); Assert.IsNull(ast.Right); Assert.IsNull(ast.Arguments); }
private BinaryTree PrologTerm(string s) { // Try to parse 'predicate.' Write("parsertest.txt", s); StreamReader sr = new StreamReader("C:\\parsertest.txt"); PrologCodeParser parser = new PrologCodeParser(); parser.Scanner = new PrologScanner(sr); BinaryTree ast = parser.Term(1200); sr.Close(); File.Delete("C:\\parsertest.txt"); return ast; }
public void Parse_Fact_with_Variable_Arg() { // Try to parse 'predicate.' Write("factnoargs.txt", "predicate(X)."); StreamReader sr = new StreamReader("C:\\factnoargs.txt"); PrologCodeParser parser = new PrologCodeParser(); parser.Scanner = new PrologScanner(sr); BinaryTree ast = parser.Term(1200); sr.Close(); // Expect: BinaryTree("predicate", null, null, null); Assert.AreEqual("predicate", ast.Name); Assert.IsNull(ast.Left); Assert.IsNull(ast.Right); ArrayList args = new ArrayList(); ast.Flatten((BinaryTree)ast.Arguments[0], ref args); Assert.AreEqual(1, args.Count); }