Exemplo n.º 1
0
 public override string ToString()
 {
     if (_hasDelta)
     {
         return(string.Format("{0} to {1}",
                              ParsecUtility.CharToString(Start),
                              ParsecUtility.CharToString(End)));
     }
     else
     {
         return(ParsecUtility.CharToString(Start));
     }
 }
        protected override ResultCore DoParse(Reader src)
        {
            var ch = src.Read();

            if (0 <= ch && _clazz.Contains((char)ch))
            {
                return(Success());
            }
            else
            {
                return(Failure(string.Format("a member of {0} expected but {1} found.",
                                             _clazz, ParsecUtility.CharToString(ch))));
            }
        }
        /// <summary>
        /// パースを行います。
        /// </summary>
        /// <param name="src"></param>
        /// <returns></returns>
        protected override ResultCore DoParse(Reader src)
        {
            var actual = src.Read();

            if (_expected == actual)
            {
                return(Success());
            }
            else
            {
                return(Failure(string.Format("expected {0} but found {1}.",
                                             ParsecUtility.CharToString(_expected), ParsecUtility.CharToString(actual))));
            }
        }
Exemplo n.º 4
0
 protected override ResultCore DoParse(Reader src)
 {
     // キーワードの左側から順番に文字の照合を実施
     // *照合中にEOFに到達した場合も通常の文字と同じ比較処理で検出し
     // ハンドリングできるため、ループ条件部には何もチェックを入れない
     for (var i = 0; i < _keyword.Length; i++)
     {
         // 期待される文字
         var expected = _keyword[i];
         // 実際の文字
         var actual = src.Read();
         // 比較を行う
         if (expected != actual)
         {
             // NGの場合、その旨の結果を呼び出し元に返す
             return(Failure(string.Format("expected {0} but found {1} at index {2} in \"{3}\"",
                                          ParsecUtility.CharToString(expected), ParsecUtility.CharToString(actual), i, _keyword),
                            -1 == _cut || i < _cut));
         }
     }
     return(Success());
 }
 protected override ResultCore DoParse(Reader src)
 {
     return(src.EndOfFile ? Success()
         : Failure(string.Format("EOF expected but found {0}.",
                                 ParsecUtility.CharToString(src.Peek()))));
 }