Example #1
0
        static void Main(string[] args)
        {
            string filename = "";

            Console.Write("Enter the name of the file with the total knowledge base: ");
            filename = Console.ReadLine();
            StreamReader sr = new StreamReader(filename);

            TokenDefinition[] defs =
            {
                new TokenDefinition(TokenType.EndOfFile, @"\Z"),
                new TokenDefinition(TokenType.Not, @"~"),
                new TokenDefinition(TokenType.Or, @"\|"),
                //new TokenDefinition(TokenType.Period, @"\."),
                new TokenDefinition(TokenType.Identifier, @"[A-Z]\w*"),
                new TokenDefinition(TokenType.Variable, @"[a-z]\w*"),
                new TokenDefinition(TokenType.Comma, @","),
                new TokenDefinition(TokenType.LeftParen, @"\("),
                new TokenDefinition(TokenType.RightParen, @"\)"),
                //new TokenDefinition(TokenType.QuestionMark, @"\?"),
                new TokenDefinition(TokenType.Unknown, @".")
            };

            Lexer l = new Lexer(sr, defs);
            Parser p = new Parser(l);
            List<Sentence> sentences = p.Parse();
            sentences = sentences.OrderByDescending(sentence => sentence.Predicates.Count()).ToList();
            sentences.Reverse();

            ResEngine engine = new ResEngine();

            Console.Write("Thinking... ");
            bool result = engine.Resolution(sentences);

            Console.WriteLine();
            Console.WriteLine("The result of the query is: " + result);

            if (result) {
                Console.WriteLine("Operations performed: ");
                engine.solutionPath.ForEach(Console.WriteLine);
            }

            Console.ReadLine();
        }
Example #2
0
 public Parser(Lexer l)
 {
     lexer = l;
     currentToken = lexer.GetToken();
 }