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); }
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); }
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; }