Пример #1
0
        private static RootTuple MakeRoot(ref TokenReader reader)
        {
            System.Diagnostics.Debug.WriteLine("MakeRoot");
            var ret = new RootTuple();

            if (reader.IsRemainToken)
            {
                ret.Cluster = MakeCluster(ref reader);
            }
            if (reader.IsRemainToken)
            {
                throw new ArgumentException("クエリが途中で終了しています。閉じ括弧が多すぎる可能性があります。(次のクエリ:" + reader.LookAhead().ToString() +
                                            ", インデックス:" + reader.LookAhead().DebugIndex.ToString());
            }
            return(ret);
        }
Пример #2
0
        static SyntaxTuple MakeTuples(IEnumerable <Token> tokens)
        {
            var       reader = new TokenReader(tokens);
            RootTuple roots  = null;

            try
            {
                roots = MakeRoot(ref reader);
            }
            catch (ArgumentException e)
            {
                throw new ArgumentException(e.Message + Environment.NewLine +
                                            "他のエラー:" + String.Join(Environment.NewLine, reader.Errors()), e);
            }
            if (reader.IsContainErrors)
            {
                throw new ArgumentException("シンタックス エラー:" + String.Join(Environment.NewLine, reader.Errors()));
            }
            if (reader.IsRemainToken)
            {
                throw new ArgumentException("閉じ括弧が多すぎる可能性があります。(クエリは途中で解析を完了しました) (next:@" + reader.Get().DebugIndex + ")");
            }
            return(roots);
        }
Пример #3
0
 private static RootTuple MakeRoot(ref TokenReader reader)
 {
     System.Diagnostics.Debug.WriteLine("MakeRoot");
     var ret = new RootTuple();
     if (reader.IsRemainToken)
     {
         ret.Cluster = MakeCluster(ref reader);
     }
     if (reader.IsRemainToken)
         throw new ArgumentException("クエリが途中で終了しています。閉じ括弧が多すぎる可能性があります。(次のクエリ:" + reader.LookAhead().ToString() +
             ", インデックス:" + reader.LookAhead().DebugIndex.ToString());
     return ret;
 }