コード例 #1
0
 /// <summary>
 /// Ensures that specified data could be parsed as a syntactic item.
 /// </summary>
 public static void Ensure(SyntacticItem item, string data)
 {
     if (!TryParse(item, data))
     {
         throw new InvalidOperationException();
     }
 }
コード例 #2
0
        /// <summary>
        /// Checks whether specified data string can be fully parsed to the syntactic item.
        /// </summary>
        public void Check(bool expected, SyntacticItem item, string data)
        {
            bool result = Parse(item, data);

            if (expected != result)
            {
                throw new AssertFailedException(
                          String.Format(
                              "Checking for [{0}] failed. Expected:<{1}>. Actual:<{2}>.",
                              data.ToDisplay(),
                              expected,
                              !expected));
            }
        }
コード例 #3
0
        /// <summary>
        /// Returns true only if all input data has been successfully parsed.
        /// </summary>
        public static bool ParseFull(this SyntacticItem item, SyntacticState state)
        {
            bool parsed = item.Parse(state);

            if (!parsed)
            {
                return(false);
            }

            if (!state.IsEndOfData)
            {
                return(false);
            }

            return(true);
        }
コード例 #4
0
        /// <summary>
        /// Tries to parse specified data as a syntactic item.
        /// </summary>
        public static bool TryParse(SyntacticItem item, string data)
        {
            LexicalState lexicalState = new LexicalState(data);

            if (!Input.S.ParseFull(lexicalState))
            {
                return(false);
            }

            SyntacticState syntacticState = new SyntacticState(
                lexicalState.ExtractTokens(),
                data);

            if (!item.ParseFull(syntacticState))
            {
                return(false);
            }

            return(true);
        }
コード例 #5
0
ファイル: Optional.cs プロジェクト: shuruev/NutaParser
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public Optional(SyntacticItem item)
     : base(item, Empty.S)
 {
 }
コード例 #6
0
ファイル: SyntacticTest.cs プロジェクト: shuruev/NutaParser
 /// <summary>
 /// Tries to parses specified data string into syntactic item.
 /// </summary>
 protected override bool Parse(SyntacticItem item, string data)
 {
     return(CssParser.TryParse(item, data));
 }
コード例 #7
0
ファイル: ParseMany.cs プロジェクト: shuruev/NutaParser
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public ParseMany(SyntacticItem part)
     : this(part, null)
 {
 }
コード例 #8
0
ファイル: ParseMany.cs プロジェクト: shuruev/NutaParser
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public ParseMany(SyntacticItem part, SyntacticItem delimiter)
 {
     m_part = part;
     m_delimiter = delimiter;
 }
コード例 #9
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public ParseMany(SyntacticItem part)
     : this(part, null)
 {
 }
コード例 #10
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public ParseMany(SyntacticItem part, SyntacticItem delimiter)
 {
     m_part      = part;
     m_delimiter = delimiter;
 }
コード例 #11
0
 /// <summary>
 /// Tries to parses specified data string into syntactic item.
 /// </summary>
 protected abstract bool Parse(SyntacticItem item, string data);
コード例 #12
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public Optional(SyntacticItem item)
     : base(item, Empty.S)
 {
 }