AjRools.Expert.Compiler.Parser.ParseFact C# (CSharp) Метод

ParseFact() приватный Метод

private ParseFact ( ) : Fact
Результат Fact
        private Fact ParseFact()
        {
            string name = this.ParseName();

            if (name == "then" || name == "end")
            {
                this.PushToken(name);
                return null;
            }

            Token token = this.NextToken();

            if (token == null)
                throw new LexerException("Unexpected End of Input");

            if (token.Type == TokenType.EndOfLine)
                return new IsFact(name, true);

            if (token.Type == TokenType.Separator && token.Value == ".")
                return this.ParsePropertyFact(name);

            if (token.Type != TokenType.Name || (token.Value != "is" && token.Value != "is_not" && token.Value != "is_a"))
                if (token.Type != TokenType.Operator || !comparisonVerbs.ContainsKey(token.Value))
                    throw new LexerException(string.Format("Unexpected '{0}'", token.Value));

            string verb = token.Value;

            object value = this.ParseValue();

            this.ParseEndOfLine();

            if (verb == "is")
                return new IsFact(name, value);
            else if (verb == "is_not")
                return new IsNotFact(name, value);
            else if (verb == "is_a")
                return new IsAFact(name, (string) value);
            else
                return new ComparisonFact(name, comparisonVerbs[verb], value);
        }