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(); }
public Parser(Lexer l) { lexer = l; currentToken = lexer.GetToken(); }