Summary description for PrologCodeParser.
Inheritance: IPrologParser
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
 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);
        }