You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by do...@apache.org on 2009/07/29 20:04:24 UTC

svn commit: r798995 [17/35] - in /incubator/lucene.net/trunk/C#/src: Lucene.Net/ Lucene.Net/Analysis/ Lucene.Net/Analysis/Standard/ Lucene.Net/Document/ Lucene.Net/Index/ Lucene.Net/QueryParser/ Lucene.Net/Search/ Lucene.Net/Search/Function/ Lucene.Net...

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/QueryParser.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.cs Wed Jul 29 18:04:12 2009
@@ -91,12 +91,6 @@
 	/// <p>Note that QueryParser is <em>not</em> thread-safe.</p>
 	/// 
 	/// </summary>
-	/// <author>  Brian Goetz
-	/// </author>
-	/// <author>  Peter Halacsy
-	/// </author>
-	/// <author>  Tatu Saloranta
-	/// </author>
 	public class QueryParser : QueryParserConstants
 	{
 		private void  InitBlock()
@@ -141,7 +135,13 @@
 		internal DateTools.Resolution dateResolution = null;
 		// maps field names to date resolutions
 		internal System.Collections.IDictionary fieldToDateResolution = null;
-		
+
+        /// <summary>
+        /// The Collator to use when determining range inclusion, for use
+        /// when constructin RangeQuerys and ConstantScoreRangeQuerys
+        /// </summary>
+        internal System.Globalization.CompareInfo rangeCollator = null;
+
 		/// <summary>The default operator for parsing queries. 
 		/// Use {@link QueryParser#setDefaultOperator} to change it.
 		/// </summary>
@@ -178,7 +178,7 @@
 			{
 				// TopLevelQuery is a Query followed by the end-of-input (EOF)
 				Query res = TopLevelQuery(field);
-				return res != null ? res : new BooleanQuery();
+				return res != null ? res : newBooleanQuery(false);
 			}
 			catch (ParseException tme)
 			{
@@ -189,7 +189,7 @@
 			{
 				throw new ParseException("Cannot parse '" + query + "': " + tme.Message);
 			}
-			catch (BooleanQuery.TooManyClauses tmc)
+			catch (BooleanQuery.TooManyClauses)
 			{
 				throw new ParseException("Cannot parse '" + query + "': too many boolean clauses");
 			}
@@ -345,8 +345,7 @@
 		public virtual void  SetUseOldRangeQuery(bool useOldRangeQuery)
 		{
 			this.useOldRangeQuery = useOldRangeQuery;
-		}
-		
+		}	
 		
 		/// <seealso cref="SetUseOldRangeQuery(boolean)">
 		/// </seealso>
@@ -355,7 +354,6 @@
 			return useOldRangeQuery;
 		}
 		
-		
 		/// <summary> Set locale used by date range parsing.</summary>
 		public virtual void  SetLocale(System.Globalization.CultureInfo locale)
 		{
@@ -430,7 +428,36 @@
 			
 			return resolution;
 		}
-		
+
+        /// <summary>
+        /// Sets the collator used to determine index term inclusion in ranges
+        /// specified either for ConstantScoreRangeQuery or RangeQuery (if SetUseOldRangeQuery(bool)
+        /// is called with a parameter of true.
+        /// <para>
+        /// WARNING: Setting the rangeCollator to a non-null
+        /// collator using this method will cause every single index Term in the
+        /// Field referenced by lowerTerm and/or upperTerm to be examined.
+        /// Depending on the number of index Terms in this Field, the operation
+        /// could be very slow.
+        /// </para>
+        /// </summary>
+        /// <param name="rc">the collator to use when constructing RangeQuery and ConstantScoreRangeQuery</param>
+        public void SetRangeCollator(System.Globalization.CompareInfo rc)
+        {
+            rangeCollator = rc;
+        }
+
+        /// <summary>
+        /// Returns the collator used to determine index term inclusion in ranges
+        /// specified either for ConstantScoreRangeQuery or RangeQuery (if
+        /// SetUseOldRangeQuery(bool) is called with the parameter true).
+        /// </summary>
+        /// <returns></returns>
+        public System.Globalization.CompareInfo GetRangeCollator()
+        {
+            return rangeCollator;
+        }
+
 		public virtual void  AddClause(System.Collections.ArrayList clauses, int conj, int mods, Query q)
 		{
 			bool required, prohibited;
@@ -497,8 +524,8 @@
 			// PhraseQuery, or nothing based on the term count
 			
 			TokenStream source = analyzer.TokenStream(field, new System.IO.StringReader(queryText));
-			System.Collections.ArrayList v = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
-			Lucene.Net.Analysis.Token t;
+			System.Collections.ArrayList list = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
+			Lucene.Net.Analysis.Token nextToken;
 			int positionCount = 0;
 			bool severalTokensAtSamePosition = false;
 			
@@ -506,17 +533,17 @@
 			{
 				try
 				{
-					t = source.Next();
+                    nextToken = source.Next();
 				}
-				catch (System.IO.IOException e)
+				catch (System.IO.IOException)
 				{
-					t = null;
+                    nextToken = null;
 				}
-				if (t == null)
+                if (nextToken == null)
 					break;
-				v.Add(t);
-				if (t.GetPositionIncrement() != 0)
-					positionCount += t.GetPositionIncrement();
+                list.Add(nextToken);
+                if (nextToken.GetPositionIncrement() != 0)
+                    positionCount += nextToken.GetPositionIncrement();
 				else
 					severalTokensAtSamePosition = true;
 			}
@@ -524,17 +551,17 @@
 			{
 				source.Close();
 			}
-			catch (System.IO.IOException e)
+			catch (System.IO.IOException)
 			{
 				// ignore
 			}
 			
-			if (v.Count == 0)
+			if (list.Count == 0)
 				return null;
-			else if (v.Count == 1)
+			else if (list.Count == 1)
 			{
-				t = (Lucene.Net.Analysis.Token) v[0];
-				return new TermQuery(new Term(field, t.TermText()));
+                nextToken = (Lucene.Net.Analysis.Token)list[0];
+                return newTermQuery(new Term(field, nextToken.Term()));
 			}
 			else
 			{
@@ -544,10 +571,10 @@
 					{
 						// no phrase query:
 						BooleanQuery q = new BooleanQuery(true);
-						for (int i = 0; i < v.Count; i++)
+						for (int i = 0; i < list.Count; i++)
 						{
-							t = (Lucene.Net.Analysis.Token) v[i];
-							TermQuery currentQuery = new TermQuery(new Term(field, t.TermText()));
+                            nextToken = (Lucene.Net.Analysis.Token)list[i];
+                            Query currentQuery = newTermQuery(new Term(field, nextToken.Term()));
 							q.Add(currentQuery, BooleanClause.Occur.SHOULD);
 						}
 						return q;
@@ -559,10 +586,10 @@
 						mpq.SetSlop(phraseSlop);
 						System.Collections.ArrayList multiTerms = new System.Collections.ArrayList();
 						int position = - 1;
-						for (int i = 0; i < v.Count; i++)
+						for (int i = 0; i < list.Count; i++)
 						{
-							t = (Lucene.Net.Analysis.Token) v[i];
-							if (t.GetPositionIncrement() > 0 && multiTerms.Count > 0)
+                            nextToken = (Lucene.Net.Analysis.Token)list[i];
+                            if (nextToken.GetPositionIncrement() > 0 && multiTerms.Count > 0)
 							{
 								if (enablePositionIncrements)
 								{
@@ -574,8 +601,8 @@
 								}
 								multiTerms.Clear();
 							}
-							position += t.GetPositionIncrement();
-							multiTerms.Add(new Term(field, t.TermText()));
+                            position += nextToken.GetPositionIncrement();
+                            multiTerms.Add(new Term(field, nextToken.Term()));
 						}
 						if (enablePositionIncrements)
 						{
@@ -590,20 +617,20 @@
 				}
 				else
 				{
-					PhraseQuery pq = new PhraseQuery();
+					PhraseQuery pq = newPhraseQuery();
 					pq.SetSlop(phraseSlop);
 					int position = - 1;
-					for (int i = 0; i < v.Count; i++)
+					for (int i = 0; i < list.Count; i++)
 					{
-						t = (Lucene.Net.Analysis.Token) v[i];
+						nextToken = (Lucene.Net.Analysis.Token) list[i];
 						if (enablePositionIncrements)
 						{
-							position += t.GetPositionIncrement();
-							pq.Add(new Term(field, t.TermText()), position);
+							position += nextToken.GetPositionIncrement();
+							pq.Add(new Term(field, nextToken.Term()), position);
 						}
 						else
 						{
-							pq.Add(new Term(field, t.TermText()));
+							pq.Add(new Term(field, nextToken.Term()));
 						}
 					}
 					return pq;
@@ -694,21 +721,124 @@
 					part2 = DateTools.DateToString(d2, resolution);
 				}
 			}
-			catch (System.Exception e)
+			catch (System.Exception)
 			{
 			}
-			
-			if (useOldRangeQuery)
+
+            return newRangeQuery(field, part1, part2, inclusive);
+        }
+
+        /// <summary>
+        /// Builds a new BooleanQuery instance.
+        /// </summary>
+        /// <param name="disableCoord"></param>
+        /// <returns>new BooleanQuery instance</returns>
+        protected BooleanQuery newBooleanQuery(bool disableCoord)
+        {
+            return new BooleanQuery(disableCoord);
+        }
+
+        /// <summary>
+        /// Builds a new BooleanClause instance.
+        /// </summary>
+        /// <param name="q"></param>
+        /// <param name="occur"></param>
+        /// <returns>new BooleanClause instance</returns>
+        protected BooleanClause newBooleanClause(Query q, BooleanClause.Occur occur)
+        {
+            return new BooleanClause(q, occur);
+        }
+
+        /// <summary>
+        /// Builds a new TermQuery instance.
+        /// </summary>
+        /// <param name="term"></param>
+        /// <returns>new TermQuery instance</returns>
+        protected Query newTermQuery(Term term)
+        {
+            return new TermQuery(term);
+        }
+
+        /// <summary>
+        /// Builds a new PhraseQuery instance.
+        /// </summary>
+        /// <returns>new PhraseQuery instance</returns>
+        protected PhraseQuery newPhraseQuery()
+        {
+            return new PhraseQuery();
+        }
+
+        /// <summary>
+        /// Builds a new MultiPhraseQuery instance.
+        /// </summary>
+        /// <returns>new MultiPhraseQuery instance</returns>
+        protected MultiPhraseQuery newMultiPhraseQuery()
+        {
+            return new MultiPhraseQuery();
+        }
+
+        /// <summary>
+        /// Builds a new PrefixQuery instance.
+        /// </summary>
+        /// <param name="prefix"></param>
+        /// <returns>new PrefixQuery instance</returns>
+        protected Query newPrefixQuery(Term prefix)
+        {
+            return new PrefixQuery(prefix);
+        }
+
+        /// <summary>
+        /// Builds a new FuzzyQuery instance.
+        /// </summary>
+        /// <param name="term"></param>
+        /// <param name="minimumSimilarity"></param>
+        /// <param name="prefixLength"></param>
+        /// <returns>new FuzzyQuery instance</returns>
+        protected Query newFuzzyQuery(Term term, float minimumSimilarity, int prefixLength)
+        {
+            return new FuzzyQuery(term, minimumSimilarity, prefixLength);
+        }
+
+        /// <summary>
+        /// Builds a new RangeQuery instance.
+        /// </summary>
+        /// <param name="field"></param>
+        /// <param name="part1"></param>
+        /// <param name="part2"></param>
+        /// <param name="inclusive"></param>
+        /// <returns>new RangeQuery instance</returns>
+        protected Query newRangeQuery(String field, String part1, String part2, bool inclusive)
+        {
+            if (useOldRangeQuery)
 			{
-				return new RangeQuery(new Term(field, part1), new Term(field, part2), inclusive);
+				return new RangeQuery(new Term(field, part1), new Term(field, part2), inclusive, rangeCollator);
 			}
 			else
 			{
-				return new ConstantScoreRangeQuery(field, part1, part2, inclusive, inclusive);
+				return new ConstantScoreRangeQuery(field, part1, part2, inclusive, inclusive, rangeCollator);
 			}
 		}
-		
-		/// <summary> Factory method for generating query, given a set of clauses.
+
+        /// <summary>
+        /// Builds a new MatchAllDocsQuery instance.
+        /// </summary>
+        /// <returns>new MatchAllDocsQuery instance</returns>
+        protected Query newMatchAllDocsQuery()
+        {
+            return new MatchAllDocsQuery();
+        }
+
+        /// <summary>
+        /// Builds a new WildcardQuery instance.
+        /// </summary>
+        /// <param name="term"></param>
+        /// <returns>new WildcardQuery instance</returns>
+        protected Query newWildcardQuery(Term t)
+        {
+            return new WildcardQuery(t);
+        }
+
+        /// <summary> Factory method for generating query, given a set of clauses.
 		/// By default creates a boolean query composed of clauses passed in.
 		/// 
 		/// Can be overridden by extending classes, to modify query being
@@ -788,7 +918,7 @@
 			if ("*".Equals(field))
 			{
 				if ("*".Equals(termStr))
-					return new MatchAllDocsQuery();
+					return newMatchAllDocsQuery();
 			}
 			if (!allowLeadingWildcard && (termStr.StartsWith("*") || termStr.StartsWith("?")))
 				throw new ParseException("'*' or '?' not allowed as first character in WildcardQuery");
@@ -797,7 +927,7 @@
 				termStr = termStr.ToLower();
 			}
 			Term t = new Term(field, termStr);
-			return new WildcardQuery(t);
+			return newWildcardQuery(t);
 		}
 		
 		/// <summary> Factory method for generating a query (similar to
@@ -835,7 +965,7 @@
 				termStr = termStr.ToLower();
 			}
 			Term t = new Term(field, termStr);
-			return new PrefixQuery(t);
+			return newPrefixQuery(t);
 		}
 		
 		
@@ -860,14 +990,14 @@
 				termStr = termStr.ToLower();
 			}
 			Term t = new Term(field, termStr);
-			return new FuzzyQuery(t, minSimilarity, fuzzyPrefixLength);
+			return newFuzzyQuery(t, minSimilarity, fuzzyPrefixLength);
 		}
 		
 		/// <summary> Returns a String where the escape char has been
 		/// removed, or kept only once if there was a double escape.
 		/// 
 		/// Supports escaped unicode characters, e. g. translates
-		/// <code>A</code> to <code>A</code>.
+		/// <code>\\u0041</code> to <code>A</code>.
 		/// 
 		/// </summary>
 		private System.String DiscardEscapeChar(System.String input)
@@ -1248,7 +1378,7 @@
                     f = (float) SupportClass.Single.Parse(boost.image);
 					q.SetBoost(f);
 				}
-				catch (System.Exception ignored)
+				catch (System.Exception)
 				{
 				}
 			}
@@ -1265,7 +1395,7 @@
 			bool prefix = false;
 			bool wildcard = false;
 			bool fuzzy = false;
-			bool rangein = false;
+			//bool rangein = false;
 			Query q;
 			switch ((jj_ntk == - 1) ? Jj_ntk() : jj_ntk)
 			{
@@ -1365,7 +1495,7 @@
 						{
                             fms = (float) SupportClass.Single.Parse(fuzzySlop.image.Substring(1));
                         }
-						catch (System.Exception ignored)
+						catch (System.Exception)
 						{
 						}
 						if (fms < 0.0f || fms > 1.0f)
@@ -1571,7 +1701,7 @@
 						{
                             s = (int) SupportClass.Single.Parse(fuzzySlop.image.Substring(1));
 						}
-						catch (System.Exception ignored)
+						catch (System.Exception)
 						{
 						}
 					}
@@ -1591,7 +1721,7 @@
 				{
                     f = (float) SupportClass.Single.Parse(boost.image);
 				}
-				catch (System.Exception ignored)
+				catch (System.Exception)
 				{
 					/* Should this be handled somehow? (defaults to "no boost", if
 					* boost number is invalid)
@@ -1618,7 +1748,7 @@
 			{
 				return !Jj_3_1();
 			}
-			catch (LookaheadSuccess ls)
+			catch (LookaheadSuccess)
 			{
 				return true;
 			}
@@ -1627,6 +1757,15 @@
 				Jj_save(0, xla);
 			}
 		}
+
+        private bool Jj_3R_3()
+        {
+            if (Jj_scan_token(Lucene.Net.QueryParsers.QueryParserConstants.STAR))
+                return true;
+            if (Jj_scan_token(Lucene.Net.QueryParsers.QueryParserConstants.COLON))
+                return true;
+            return false;
+        }
 		
 		private bool Jj_3R_2()
 		{
@@ -1650,31 +1789,30 @@
 			return false;
 		}
 		
-		private bool Jj_3R_3()
-		{
-			if (Jj_scan_token(Lucene.Net.QueryParsers.QueryParserConstants.STAR))
-				return true;
-			if (Jj_scan_token(Lucene.Net.QueryParsers.QueryParserConstants.COLON))
-				return true;
-			return false;
-		}
-		
+        /// <summary>
+        /// Generated token manager
+        /// </summary>
 		public QueryParserTokenManager token_source;
-		public Token token, jj_nt;
+        /// <summary>
+        /// Current token
+        /// </summary>
+        public Token token;
+        /// <summary>
+        /// Next token.
+        /// </summary>
+        public Token jj_nt;
 		private int jj_ntk;
 		private Token jj_scanpos, jj_lastpos;
 		private int jj_la;
-		public bool lookingAhead = false;
-		private bool jj_semLA;
 		private int jj_gen;
 		private int[] jj_la1 = new int[23];
 		private static uint[] jj_la1_0;
 		private static uint[] jj_la1_1;
-		private static void  Jj_la1_0()
+		private static void  Jj_la1_init_0()
 		{
 			jj_la1_0 = new uint[]{0x180, 0x180, 0xe00, 0xe00, 0x1f69f80, 0x48000, 0x10000, 0x1f69000, 0x1348000, 0x80000, 0x80000, 0x10000, 0x18000000, 0x2000000, 0x18000000, 0x10000, 0x80000000, 0x20000000, 0x80000000, 0x10000, 0x80000, 0x10000, 0x1f68000};
 		}
-		private static void  Jj_la1_1()
+		private static void  Jj_la1_init_1()
 		{
 			jj_la1_1 = new uint[]{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0};
 		}
@@ -1682,6 +1820,10 @@
 		private bool jj_rescan = false;
 		private int jj_gc = 0;
 		
+        /// <summary>
+        /// Constructor with used supplied CharStream.
+        /// </summary>
+        /// <param name="stream"></param>
 		public QueryParser(CharStream stream)
 		{
 			InitBlock();
@@ -1695,6 +1837,10 @@
 				jj_2_rtns[i] = new JJCalls();
 		}
 		
+        /// <summary>
+        /// Reinitialise.
+        /// </summary>
+        /// <param name="stream"></param>
 		public virtual void  ReInit(CharStream stream)
 		{
 			token_source.ReInit(stream);
@@ -1707,6 +1853,10 @@
 				jj_2_rtns[i] = new JJCalls();
 		}
 		
+        /// <summary>
+        /// Constructor with generated TokenManager.
+        /// </summary>
+        /// <param name="tm"></param>
 		public QueryParser(QueryParserTokenManager tm)
 		{
 			InitBlock();
@@ -1720,6 +1870,10 @@
 				jj_2_rtns[i] = new JJCalls();
 		}
 		
+        /// <summary>
+        /// Reinitialise.
+        /// </summary>
+        /// <param name="tm"></param>
 		public virtual void  ReInit(QueryParserTokenManager tm)
 		{
 			token_source = tm;
@@ -1804,6 +1958,10 @@
 			return false;
 		}
 		
+        /// <summary>
+        /// Get the next Token.
+        /// </summary>
+        /// <returns></returns>
 		public Token GetNextToken()
 		{
 			if (token.next != null)
@@ -1815,9 +1973,14 @@
 			return token;
 		}
 		
+        /// <summary>
+        /// Get the specific Token.
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
 		public Token GetToken(int index)
 		{
-			Token t = lookingAhead ? jj_scanpos : token;
+			Token t = token;
 			for (int i = 0; i < index; i++)
 			{
 				if (t.next != null)
@@ -1857,40 +2020,41 @@
 				{
 					jj_expentry[i] = jj_lasttokens[i];
 				}
-				bool exists = false;
-				for (System.Collections.IEnumerator e = jj_expentries.GetEnumerator(); e.MoveNext(); )
+                // {dougsale-2.4.0}
+                // Java handles this control flow differently than C#
+                // Java does not re-execute the initiation step of the for loop, C# does.
+                // So, break out the initiation step and place it before the labeled statement.
+                //jj_entries_loop: for (System.Collections.IEnumerator e = jj_expentries.GetEnumerator(); e.MoveNext(); )
+                System.Collections.IEnumerator e = jj_expentries.GetEnumerator();
+                jj_entries_loop: for (; e.MoveNext(); )
 				{
 					int[] oldentry = (int[]) (e.Current);
 					if (oldentry.Length == jj_expentry.Length)
 					{
-						exists = true;
 						for (int i = 0; i < jj_expentry.Length; i++)
 						{
 							if (oldentry[i] != jj_expentry[i])
 							{
-								exists = false;
-								break;
+                                goto jj_entries_loop;
 							}
 						}
-						if (exists)
-							break;
+                        jj_expentries.Add(jj_expentry);
+						break;
 					}
 				}
-				if (!exists)
-					jj_expentries.Add(jj_expentry);
 				if (pos != 0)
 					jj_lasttokens[(jj_endpos = pos) - 1] = kind;
 			}
 		}
 		
+        /// <summary>
+        /// Generate ParseException.
+        /// </summary>
+        /// <returns></returns>
 		public virtual ParseException GenerateParseException()
 		{
 			jj_expentries.Clear();
-			bool[] la1tokens = new bool[33];
-			for (int i = 0; i < 33; i++)
-			{
-				la1tokens[i] = false;
-			}
+			bool[] la1tokens = new bool[34];
 			if (jj_kind >= 0)
 			{
 				la1tokens[jj_kind] = true;
@@ -1913,7 +2077,7 @@
 					}
 				}
 			}
-			for (int i = 0; i < 33; i++)
+			for (int i = 0; i < 34; i++)
 			{
 				if (la1tokens[i])
 				{
@@ -1933,10 +2097,16 @@
 			return new ParseException(token, exptokseq, Lucene.Net.QueryParsers.QueryParserConstants.tokenImage);
 		}
 		
+        /// <summary>
+        /// Enable tracing.
+        /// </summary>
 		public void  Enable_tracing()
 		{
 		}
 		
+        /// <summary>
+        /// Disable tracing.
+        /// </summary>
 		public void  Disable_tracing()
 		{
 		}
@@ -1946,21 +2116,25 @@
 			jj_rescan = true;
 			for (int i = 0; i < 1; i++)
 			{
-				JJCalls p = jj_2_rtns[i];
-				do 
-				{
-					if (p.gen > jj_gen)
-					{
-						jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
-						switch (i)
-						{
-							
-							case 0:  Jj_3_1(); break;
-							}
-					}
-					p = p.next;
-				}
-				while (p != null);
+                try
+                {
+                    JJCalls p = jj_2_rtns[i];
+                    do
+                    {
+                        if (p.gen > jj_gen)
+                        {
+                            jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+                            switch (i)
+                            {
+
+                                case 0: Jj_3_1(); break;
+                            }
+                        }
+                        p = p.next;
+                    }
+                    while (p != null);
+                }
+                catch (LookaheadSuccess) { }
 			}
 			jj_rescan = false;
 		}
@@ -1986,11 +2160,12 @@
 			internal int arg;
 			internal JJCalls next;
 		}
+
 		static QueryParser()
 		{
 			{
-				Jj_la1_0();
-				Jj_la1_1();
+				Jj_la1_init_0();
+				Jj_la1_init_1();
 			}
 		}
 	}

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserConstants.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/QueryParserConstants.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserConstants.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserConstants.cs Wed Jul 29 18:04:12 2009
@@ -2,15 +2,18 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to You under the Apache License,
+Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  * 
  * http://www.apache.org/licenses/LICENSE-2.0
  * 
- * Unless required by applicable law or agreed to in writing, software
+ * Unless required by applicable law or agreed to in writing,
+software
  * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
@@ -21,45 +24,126 @@
 
 namespace Lucene.Net.QueryParsers
 {
-	
+	/// <summary>
+	/// Token literal values and constants.
+    /// Generated by org.javacc.parser.OtherFilesGen#start()
+	/// </summary>
 	public class QueryParserConstants
 	{
-		public const int EOF = 0;
-		public const int _NUM_CHAR = 1;
-		public const int _ESCAPED_CHAR = 2;
-		public const int _TERM_START_CHAR = 3;
-		public const int _TERM_CHAR = 4;
-		public const int _WHITESPACE = 5;
-		public const int AND = 7;
-		public const int OR = 8;
-		public const int NOT = 9;
-		public const int PLUS = 10;
-		public const int MINUS = 11;
-		public const int LPAREN = 12;
-		public const int RPAREN = 13;
-		public const int COLON = 14;
-		public const int STAR = 15;
-		public const int CARAT = 16;
-		public const int QUOTED = 17;
-		public const int TERM = 18;
-		public const int FUZZY_SLOP = 19;
-		public const int PREFIXTERM = 20;
-		public const int WILDTERM = 21;
-		public const int RANGEIN_START = 22;
-		public const int RANGEEX_START = 23;
-		public const int NUMBER = 24;
-		public const int RANGEIN_TO = 25;
-		public const int RANGEIN_END = 26;
-		public const int RANGEIN_QUOTED = 27;
-		public const int RANGEIN_GOOP = 28;
-		public const int RANGEEX_TO = 29;
-		public const int RANGEEX_END = 30;
-		public const int RANGEEX_QUOTED = 31;
-		public const int RANGEEX_GOOP = 32;
-		public const int Boost = 0;
-		public const int RangeEx = 1;
-		public const int RangeIn = 2;
-		public const int DEFAULT = 3;
-		public static System.String[] tokenImage = new System.String[]{"<EOF>", "<_NUM_CHAR>", "<_ESCAPED_CHAR>", "<_TERM_START_CHAR>", "<_TERM_CHAR>", "<_WHITESPACE>", "<token of kind 6>", "<AND>", "<OR>", "<NOT>", "\"+\"", "\"-\"", "\"(\"", "\")\"", "\":\"", "\"*\"", "\"^\"", "<QUOTED>", "<TERM>", "<FUZZY_SLOP>", "<PREFIXTERM>", "<WILDTERM>", "\"[\"", "\"{\"", "<NUMBER>", "\"TO\"", "\"]\"", "<RANGEIN_QUOTED>", "<RANGEIN_GOOP>", "\"TO\"", "\"}\"", "<RANGEEX_QUOTED>", "<RANGEEX_GOOP>"};
+        /// <summary>End of File.</summary>
+        public const int EOF = 0;
+        /// <summary>RegularExpression Id.</summary>
+        public const int _NUM_CHAR = 1;
+        /// <summary>RegularExpression Id.</summary>
+        public const int _ESCAPED_CHAR = 2;
+        /// <summary>RegularExpression Id.</summary>
+        public const int _TERM_START_CHAR = 3;
+        /// <summary>RegularExpression Id.</summary>
+        public const int _TERM_CHAR = 4;
+        /// <summary>RegularExpression Id.</summary>
+        public const int _WHITESPACE = 5;
+        /// <summary>RegularExpression Id.</summary>
+        public const int _QUOTED_CHAR = 6;
+        /// <summary>RegularExpression Id.</summary>
+        public const int AND = 8;
+        /// <summary>RegularExpression Id.</summary>
+        public const int OR = 9;
+        /// <summary>RegularExpression Id.</summary>
+        public const int NOT = 10;
+        /// <summary>RegularExpression Id.</summary>
+        public const int PLUS = 11;
+        /// <summary>RegularExpression Id.</summary>
+        public const int MINUS = 12;
+        /// <summary>RegularExpression Id.</summary>
+        public const int LPAREN = 13;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RPAREN = 14;
+        /// <summary>RegularExpression Id.</summary>
+        public const int COLON = 15;
+        /// <summary>RegularExpression Id.</summary>
+        public const int STAR = 16;
+        /// <summary>RegularExpression Id.</summary>
+        public const int CARAT = 17;
+        /// <summary>RegularExpression Id.</summary>
+        public const int QUOTED = 18;
+        /// <summary>RegularExpression Id.</summary>
+        public const int TERM = 19;
+        /// <summary>RegularExpression Id.</summary>
+        public const int FUZZY_SLOP = 20;
+        /// <summary>RegularExpression Id.</summary>
+        public const int PREFIXTERM = 21;
+        /// <summary>RegularExpression Id.</summary>
+        public const int WILDTERM = 22;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEIN_START = 23;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEEX_START = 24;
+        /// <summary>RegularExpression Id.</summary>
+        public const int NUMBER = 25;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEIN_TO = 26;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEIN_END = 27;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEIN_QUOTED = 28;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEIN_GOOP = 29;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEEX_TO = 30;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEEX_END = 31;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEEX_QUOTED = 32;
+        /// <summary>RegularExpression Id.</summary>
+        public const int RANGEEX_GOOP = 33;
+
+        /// <summary>Lexical state.</summary>
+        public const int Boost = 0;
+        /// <summary>Lexical state.</summary>
+        public const int RangeEx = 1;
+        /// <summary>Lexical state.</summary>
+        public const int RangeIn = 2;
+        /// <summary>Lexical state.</summary>
+        public const int DEFAULT = 3;
+
+        /// <summary>
+        /// Literal token values.
+        /// </summary>
+		public static string[] tokenImage = new string[] {
+            "<EOF>",
+            "<_NUM_CHAR>",
+            "<_ESCAPED_CHAR>",
+            "<_TERM_START_CHAR>",
+            "<_TERM_CHAR>",
+            "<_WHITESPACE>",
+            "<_QUOTED_CHAR>",
+            "<token of kind 7>",
+            "<AND>",
+            "<OR>",
+            "<NOT>",
+            "\"+\"",
+            "\"-\"",
+            "\"(\"",
+            "\")\"",
+            "\":\"",
+            "\"*\"",
+            "\"^\"",
+            "<QUOTED>",
+            "<TERM>",
+            "<FUZZY_SLOP>",
+            "<PREFIXTERM>",
+            "<WILDTERM>",
+            "\"[\"",
+            "\"{\"",
+            "<NUMBER>",
+            "\"TO\"",
+            "\"]\"",
+            "<RANGEIN_QUOTED>",
+            "<RANGEIN_GOOP>",
+            "\"TO\"",
+            "\"}\"",
+            "<RANGEEX_QUOTED>",
+            "<RANGEEX_GOOP>"
+        };
 	}
 }
\ No newline at end of file

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserTokenManager.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/QueryParserTokenManager.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserTokenManager.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserTokenManager.cs Wed Jul 29 18:04:12 2009
@@ -63,101 +63,66 @@
 			jjmatchedPos = pos;
 			return pos + 1;
 		}
-		private int JjStartNfaWithStates_3(int pos, int kind, int state)
-		{
-			jjmatchedKind = kind;
-			jjmatchedPos = pos;
-			try
-			{
-				curChar = input_stream.ReadChar();
-			}
-			catch (System.IO.IOException)
-			{
-				return pos + 1;
-			}
-			return JjMoveNfa_3(state, pos + 1);
-		}
 		private int JjMoveStringLiteralDfa0_3()
 		{
 			switch (curChar)
 			{
 				
 				case (char) (40): 
-					return JjStopAtPos(0, 12);
+					return JjStopAtPos(0, 13);
 				
 				case (char) (41): 
-					return JjStopAtPos(0, 13);
+					return JjStopAtPos(0, 14);
 				
 				case (char) (42): 
-					return JjStartNfaWithStates_3(0, 15, 36);
+					return JjStartNfaWithStates_3(0, 16, 36);
 				
 				case (char) (43): 
-					return JjStopAtPos(0, 10);
+					return JjStopAtPos(0, 11);
 				
 				case (char) (45): 
-					return JjStopAtPos(0, 11);
+					return JjStopAtPos(0, 12);
 				
 				case (char) (58): 
-					return JjStopAtPos(0, 14);
+					return JjStopAtPos(0, 15);
 				
 				case (char) (91): 
-					return JjStopAtPos(0, 22);
+					return JjStopAtPos(0, 23);
 				
 				case (char) (94): 
-					return JjStopAtPos(0, 16);
+					return JjStopAtPos(0, 17);
 				
 				case (char) (123): 
-					return JjStopAtPos(0, 23);
+					return JjStopAtPos(0, 24);
 				
 				default: 
 					return JjMoveNfa_3(0, 0);
 				
 			}
 		}
-		private void  JjCheckNAdd(int state)
-		{
-			if (jjrounds[state] != jjround)
-			{
-				jjstateSet[jjnewStateCnt++] = state;
-				jjrounds[state] = jjround;
-			}
-		}
-		private void  JjAddStates(int start, int end)
-		{
-			do 
-			{
-				jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-			}
-			while (start++ != end);
-		}
-		private void  JjCheckNAddTwoStates(int state1, int state2)
-		{
-			JjCheckNAdd(state1);
-			JjCheckNAdd(state2);
-		}
-		private void  JjCheckNAddStates(int start, int end)
-		{
-			do 
-			{
-				JjCheckNAdd(jjnextStates[start]);
-			}
-			while (start++ != end);
-		}
-		private void  JjCheckNAddStates(int start)
-		{
-			JjCheckNAdd(jjnextStates[start]);
-			JjCheckNAdd(jjnextStates[start + 1]);
-		}
+        private int JjStartNfaWithStates_3(int pos, int kind, int state)
+        {
+            jjmatchedKind = kind;
+            jjmatchedPos = pos;
+            try
+            {
+                curChar = input_stream.ReadChar();
+            }
+            catch (System.IO.IOException)
+            {
+                return pos + 1;
+            }
+            return JjMoveNfa_3(state, pos + 1);
+        }
 		internal static readonly ulong[] jjbitVec0 = new ulong[]{0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL};
 		internal static readonly ulong[] jjbitVec2 = new ulong[]{0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL};
 		private int JjMoveNfa_3(int startState, int curPos)
 		{
-			int[] nextStates;
 			int startsAt = 0;
 			jjnewStateCnt = 36;
 			int i = 1;
 			jjstateSet[0] = startState;
-			int j, kind = 0x7fffffff;
+			int kind = 0x7fffffff;
 			for (; ; )
 			{
 				if (++jjround == 0x7fffffff)
@@ -176,48 +141,48 @@
 							case 25: 
 								if ((0xfbfffcf8ffffd9ffL & l) == (ulong) 0L)
 									break;
-								if (kind > 21)
-									kind = 21;
+								if (kind > 22)
+									kind = 22;
 								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 0: 
 								if ((0xfbffd4f8ffffd9ffL & l) != (ulong) 0L)
 								{
-									if (kind > 21)
-										kind = 21;
+									if (kind > 22)
+										kind = 22;
 									JjCheckNAddTwoStates(25, 26);
 								}
 								else if ((0x100002600L & l) != (ulong) 0L)
 								{
-									if (kind > 6)
-										kind = 6;
+									if (kind > 7)
+										kind = 7;
 								}
 								else if (curChar == 34)
 									JjCheckNAddStates(0, 2);
 								else if (curChar == 33)
 								{
-									if (kind > 9)
-										kind = 9;
+									if (kind > 10)
+										kind = 10;
 								}
 								if ((0x7bffd0f8ffffd9ffL & l) != (ulong) 0L)
 								{
-									if (kind > 18)
-										kind = 18;
+									if (kind > 19)
+										kind = 19;
 									JjCheckNAddStates(3, 7);
 								}
 								else if (curChar == 42)
 								{
-									if (kind > 20)
-										kind = 20;
+									if (kind > 21)
+										kind = 21;
 								}
 								if (curChar == 38)
 									jjstateSet[jjnewStateCnt++] = 4;
 								break;
 							
 							case 4: 
-								if (curChar == 38 && kind > 7)
-									kind = 7;
+								if (curChar == 38 && kind > 8)
+									kind = 8;
 								break;
 							
 							case 5: 
@@ -226,12 +191,11 @@
 								break;
 							
 							case 13: 
-								if (curChar == 33 && kind > 9)
-									kind = 9;
+								if (curChar == 33 && kind > 10)
+									kind = 10;
 								break;
 							
 							case 14: 
-							case 16: 
 								if (curChar == 34)
 									JjCheckNAddStates(0, 2);
 								break;
@@ -241,16 +205,20 @@
 									JjCheckNAddStates(0, 2);
 								break;
 							
+                            case 17:
+                                JjCheckNAddStates(0, 2);
+                                break;
+
 							case 18: 
-								if (curChar == 34 && kind > 17)
-									kind = 17;
+								if (curChar == 34 && kind > 18)
+									kind = 18;
 								break;
 							
 							case 20: 
 								if ((0x3ff000000000000L & l) == (ulong) 0L)
 									break;
-								if (kind > 19)
-									kind = 19;
+								if (kind > 20)
+									kind = 20;
 								JjAddStates(8, 9);
 								break;
 							
@@ -262,49 +230,49 @@
 							case 22: 
 								if ((0x3ff000000000000L & l) == (ulong) 0L)
 									break;
-								if (kind > 19)
-									kind = 19;
+								if (kind > 20)
+									kind = 20;
 								JjCheckNAdd(22);
 								break;
 							
 							case 23: 
-								if (curChar == 42 && kind > 20)
-									kind = 20;
+								if (curChar == 42 && kind > 21)
+									kind = 21;
 								break;
 							
 							case 24: 
 								if ((0xfbffd4f8ffffd9ffL & l) == (ulong) 0L)
 									break;
-								if (kind > 21)
-									kind = 21;
+								if (kind > 22)
+									kind = 22;
 								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 27: 
-								if (kind > 21)
-									kind = 21;
+								if (kind > 22)
+									kind = 22;
 								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 28: 
 								if ((0x7bffd0f8ffffd9ffL & l) == (ulong) 0L)
 									break;
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddStates(3, 7);
 								break;
 							
 							case 29: 
 								if ((0x7bfff8f8ffffd9ffL & l) == (ulong) 0L)
 									break;
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddTwoStates(29, 30);
 								break;
 							
 							case 31: 
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddTwoStates(29, 30);
 								break;
 							
@@ -336,8 +304,8 @@
 							case 36: 
 								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 21)
-										kind = 21;
+									if (kind > 22)
+										kind = 22;
 									JjCheckNAddTwoStates(25, 26);
 								}
 								else if (curChar == 92)
@@ -347,22 +315,22 @@
 							case 0: 
 								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 18)
-										kind = 18;
+									if (kind > 19)
+										kind = 19;
 									JjCheckNAddStates(3, 7);
 								}
 								else if (curChar == 92)
 									JjCheckNAddStates(13, 15);
 								else if (curChar == 126)
 								{
-									if (kind > 19)
-										kind = 19;
+									if (kind > 20)
+										kind = 20;
 									jjstateSet[jjnewStateCnt++] = 20;
 								}
 								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 21)
-										kind = 21;
+									if (kind > 22)
+										kind = 22;
 									JjCheckNAddTwoStates(25, 26);
 								}
 								if (curChar == 78)
@@ -376,8 +344,8 @@
 								break;
 							
 							case 1: 
-								if (curChar == 68 && kind > 7)
-									kind = 7;
+								if (curChar == 68 && kind > 8)
+									kind = 8;
 								break;
 							
 							case 2: 
@@ -391,8 +359,8 @@
 								break;
 							
 							case 6: 
-								if (curChar == 82 && kind > 8)
-									kind = 8;
+								if (curChar == 82 && kind > 9)
+									kind = 9;
 								break;
 							
 							case 7: 
@@ -401,8 +369,8 @@
 								break;
 							
 							case 8: 
-								if (curChar == 124 && kind > 8)
-									kind = 8;
+								if (curChar == 124 && kind > 9)
+									kind = 9;
 								break;
 							
 							case 9: 
@@ -411,8 +379,8 @@
 								break;
 							
 							case 10: 
-								if (curChar == 84 && kind > 9)
-									kind = 9;
+								if (curChar == 84 && kind > 10)
+									kind = 10;
 								break;
 							
 							case 11: 
@@ -425,36 +393,41 @@
 									jjstateSet[jjnewStateCnt++] = 11;
 								break;
 							
-							case 15: 
-								JjAddStates(0, 2);
+							case 15:
+                                if ((0xffffffffefffffffL & l) != (ulong)0L)
+								JjCheckNAddStates(0, 2);
 								break;
 							
-							case 17: 
-								if (curChar == 92)
-									jjstateSet[jjnewStateCnt++] = 16;
+                            case 16:
+                                if (curChar == 92)
+                                    jjstateSet[jjnewStateCnt++] = 17;
+                                break;
+
+							case 17:
+                                JjCheckNAddStates(0, 2);
 								break;
 							
 							case 19: 
 								if (curChar != 126)
 									break;
-								if (kind > 19)
-									kind = 19;
+								if (kind > 20)
+									kind = 20;
 								jjstateSet[jjnewStateCnt++] = 20;
 								break;
 							
 							case 24: 
 								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 21)
-									kind = 21;
+								if (kind > 22)
+									kind = 22;
 								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 25: 
 								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 21)
-									kind = 21;
+								if (kind > 22)
+									kind = 22;
 								JjCheckNAddTwoStates(25, 26);
 								break;
 							
@@ -464,24 +437,24 @@
 								break;
 							
 							case 27: 
-								if (kind > 21)
-									kind = 21;
+								if (kind > 22)
+									kind = 22;
 								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 28: 
 								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddStates(3, 7);
 								break;
 							
 							case 29: 
 								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddTwoStates(29, 30);
 								break;
 							
@@ -491,8 +464,8 @@
 								break;
 							
 							case 31: 
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddTwoStates(29, 30);
 								break;
 							
@@ -548,14 +521,14 @@
 							case 0: 
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 								{
-									if (kind > 21)
-										kind = 21;
+									if (kind > 22)
+										kind = 22;
 									JjCheckNAddTwoStates(25, 26);
 								}
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 								{
-									if (kind > 18)
-										kind = 18;
+									if (kind > 19)
+										kind = 19;
 									JjCheckNAddStates(3, 7);
 								}
 								break;
@@ -576,8 +549,8 @@
 							case 28: 
 								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 									break;
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddStates(3, 7);
 								break;
 							
@@ -585,8 +558,8 @@
 							case 31: 
 								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) 2))
 									break;
-								if (kind > 18)
-									kind = 18;
+								if (kind > 19)
+									kind = 19;
 								JjCheckNAddTwoStates(29, 30);
 								break;
 							
@@ -615,7 +588,7 @@
 				{
 					curChar = input_stream.ReadChar();
 				}
-				catch (System.IO.IOException e)
+				catch (System.IO.IOException)
 				{
 					return curPos;
 				}
@@ -627,9 +600,9 @@
 			{
 				
 				case 0: 
-					if ((active0 & 0x20000000L) != 0L)
+					if ((active0 & 0x40000000L) != 0L)
 					{
-						jjmatchedKind = 32;
+						jjmatchedKind = 33;
 						return 6;
 					}
 					return - 1;
@@ -643,30 +616,16 @@
 		{
 			return JjMoveNfa_1(JjStopStringLiteralDfa_1(pos, (ulong) active0), pos + 1);
 		}
-		private int JjStartNfaWithStates_1(int pos, int kind, int state)
-		{
-			jjmatchedKind = kind;
-			jjmatchedPos = pos;
-			try
-			{
-				curChar = input_stream.ReadChar();
-			}
-			catch (System.IO.IOException e)
-			{
-				return pos + 1;
-			}
-			return JjMoveNfa_1(state, pos + 1);
-		}
 		private int JjMoveStringLiteralDfa0_1()
 		{
 			switch (curChar)
 			{
 				
 				case (char) (84): 
-					return JjMoveStringLiteralDfa1_1((ulong) 0x20000000L);
+					return JjMoveStringLiteralDfa1_1((ulong) 0x40000000L);
 				
 				case (char) (125): 
-					return JjStopAtPos(0, 30);
+					return JjStopAtPos(0, 31);
 				
 				default: 
 					return JjMoveNfa_1(0, 0);
@@ -679,7 +638,7 @@
 			{
 				curChar = input_stream.ReadChar();
 			}
-			catch (System.IO.IOException e)
+			catch (System.IO.IOException)
 			{
 				JjStopStringLiteralDfa_1(0, (ulong) active0);
 				return 1;
@@ -688,8 +647,8 @@
 			{
 				
 				case (char) (79): 
-					if ((active0 & 0x20000000L) != 0L)
-						return JjStartNfaWithStates_1(1, 29, 6);
+					if ((active0 & 0x40000000L) != 0L)
+						return JjStartNfaWithStates_1(1, 30, 6);
 					break;
 				
 				default: 
@@ -698,14 +657,27 @@
 			}
 			return JjStartNfa_1(0, (ulong) active0);
 		}
-		private int JjMoveNfa_1(int startState, int curPos)
+        private int JjStartNfaWithStates_1(int pos, int kind, int state)
+        {
+            jjmatchedKind = kind;
+            jjmatchedPos = pos;
+            try
+            {
+                curChar = input_stream.ReadChar();
+            }
+            catch (System.IO.IOException)
+            {
+                return pos + 1;
+            }
+            return JjMoveNfa_1(state, pos + 1);
+        }
+        private int JjMoveNfa_1(int startState, int curPos)
 		{
-			int[] nextStates;
 			int startsAt = 0;
 			jjnewStateCnt = 7;
 			int i = 1;
 			jjstateSet[0] = startState;
-			int j, kind = 0x7fffffff;
+			int kind = 0x7fffffff;
 			for (; ; )
 			{
 				if (++jjround == 0x7fffffff)
@@ -723,14 +695,14 @@
 							case 0: 
 								if ((0xfffffffeffffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 32)
-										kind = 32;
+									if (kind > 33)
+										kind = 33;
 									JjCheckNAdd(6);
 								}
 								if ((0x100002600L & l) != (ulong) 0L)
 								{
-									if (kind > 6)
-										kind = 6;
+									if (kind > 7)
+										kind = 7;
 								}
 								else if (curChar == 34)
 									JjCheckNAddTwoStates(2, 4);
@@ -752,15 +724,15 @@
 								break;
 							
 							case 5: 
-								if (curChar == 34 && kind > 31)
-									kind = 31;
+								if (curChar == 34 && kind > 32)
+									kind = 32;
 								break;
 							
 							case 6: 
 								if ((0xfffffffeffffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 32)
-									kind = 32;
+								if (kind > 33)
+									kind = 33;
 								JjCheckNAdd(6);
 								break;
 							
@@ -784,8 +756,8 @@
 							case 6: 
 								if ((0xdfffffffffffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 32)
-									kind = 32;
+								if (kind > 33)
+									kind = 33;
 								JjCheckNAdd(6);
 								break;
 							
@@ -822,8 +794,8 @@
 							case 6: 
 								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 									break;
-								if (kind > 32)
-									kind = 32;
+								if (kind > 33)
+									kind = 33;
 								JjCheckNAdd(6);
 								break;
 							
@@ -851,7 +823,7 @@
 				{
 					curChar = input_stream.ReadChar();
 				}
-				catch (System.IO.IOException e)
+				catch (System.IO.IOException)
 				{
 					return curPos;
 				}
@@ -863,12 +835,11 @@
 		}
 		private int JjMoveNfa_0(int startState, int curPos)
 		{
-			int[] nextStates;
 			int startsAt = 0;
 			jjnewStateCnt = 3;
 			int i = 1;
 			jjstateSet[0] = startState;
-			int j, kind = 0x7fffffff;
+			int kind = 0x7fffffff;
 			for (; ; )
 			{
 				if (++jjround == 0x7fffffff)
@@ -886,8 +857,8 @@
 							case 0: 
 								if ((0x3ff000000000000L & l) == (ulong) 0L)
 									break;
-								if (kind > 24)
-									kind = 24;
+								if (kind > 25)
+									kind = 25;
 								JjAddStates(19, 20);
 								break;
 							
@@ -899,8 +870,8 @@
 							case 2: 
 								if ((0x3ff000000000000L & l) == (ulong) 0L)
 									break;
-								if (kind > 24)
-									kind = 24;
+								if (kind > 25)
+									kind = 25;
 								JjCheckNAdd(2);
 								break;
 							
@@ -959,7 +930,7 @@
 				{
 					curChar = input_stream.ReadChar();
 				}
-				catch (System.IO.IOException e)
+				catch (System.IO.IOException)
 				{
 					return curPos;
 				}
@@ -971,9 +942,9 @@
 			{
 				
 				case 0: 
-					if ((active0 & 0x2000000L) != (ulong) 0L)
+					if ((active0 & 0x4000000L) != (ulong) 0L)
 					{
-						jjmatchedKind = 28;
+						jjmatchedKind = 29;
 						return 6;
 					}
 					return - 1;
@@ -987,30 +958,16 @@
 		{
 			return JjMoveNfa_2(JjStopStringLiteralDfa_2(pos, (ulong) active0), pos + 1);
 		}
-		private int JjStartNfaWithStates_2(int pos, int kind, int state)
-		{
-			jjmatchedKind = kind;
-			jjmatchedPos = pos;
-			try
-			{
-				curChar = input_stream.ReadChar();
-			}
-			catch (System.IO.IOException e)
-			{
-				return pos + 1;
-			}
-			return JjMoveNfa_2(state, pos + 1);
-		}
 		private int JjMoveStringLiteralDfa0_2()
 		{
 			switch (curChar)
 			{
 				
 				case (char) (84): 
-					return JjMoveStringLiteralDfa1_2((ulong) 0x2000000L);
+					return JjMoveStringLiteralDfa1_2((ulong) 0x4000000L);
 				
 				case (char) (93): 
-					return JjStopAtPos(0, 26);
+					return JjStopAtPos(0, 27);
 				
 				default: 
 					return JjMoveNfa_2(0, 0);
@@ -1023,7 +980,7 @@
 			{
 				curChar = input_stream.ReadChar();
 			}
-			catch (System.IO.IOException e)
+			catch (System.IO.IOException)
 			{
 				JjStopStringLiteralDfa_2(0, (ulong) active0);
 				return 1;
@@ -1032,8 +989,8 @@
 			{
 				
 				case (char) (79): 
-					if ((active0 & 0x2000000L) != (ulong) 0L)
-						return JjStartNfaWithStates_2(1, 25, 6);
+					if ((active0 & 0x4000000L) != (ulong) 0L)
+						return JjStartNfaWithStates_2(1, 26, 6);
 					break;
 				
 				default: 
@@ -1042,14 +999,27 @@
 			}
 			return JjStartNfa_2(0, (ulong) active0);
 		}
-		private int JjMoveNfa_2(int startState, int curPos)
+        private int JjStartNfaWithStates_2(int pos, int kind, int state)
+        {
+            jjmatchedKind = kind;
+            jjmatchedPos = pos;
+            try
+            {
+                curChar = input_stream.ReadChar();
+            }
+            catch (System.IO.IOException)
+            {
+                return pos + 1;
+            }
+            return JjMoveNfa_2(state, pos + 1);
+        }
+        private int JjMoveNfa_2(int startState, int curPos)
 		{
-			int[] nextStates;
 			int startsAt = 0;
 			jjnewStateCnt = 7;
 			int i = 1;
 			jjstateSet[0] = startState;
-			int j, kind = 0x7fffffff;
+			int kind = 0x7fffffff;
 			for (; ; )
 			{
 				if (++jjround == 0x7fffffff)
@@ -1067,14 +1037,14 @@
 							case 0: 
 								if ((0xfffffffeffffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 28)
-										kind = 28;
+									if (kind > 29)
+										kind = 29;
 									JjCheckNAdd(6);
 								}
 								if ((0x100002600L & l) != (ulong) 0L)
 								{
-									if (kind > 6)
-										kind = 6;
+									if (kind > 7)
+										kind = 7;
 								}
 								else if (curChar == 34)
 									JjCheckNAddTwoStates(2, 4);
@@ -1096,15 +1066,15 @@
 								break;
 							
 							case 5: 
-								if (curChar == 34 && kind > 27)
-									kind = 27;
+								if (curChar == 34 && kind > 28)
+									kind = 28;
 								break;
 							
 							case 6: 
 								if ((0xfffffffeffffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 28)
-									kind = 28;
+								if (kind > 29)
+									kind = 29;
 								JjCheckNAdd(6);
 								break;
 							
@@ -1128,8 +1098,8 @@
 							case 6: 
 								if ((0xffffffffdfffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 28)
-									kind = 28;
+								if (kind > 29)
+									kind = 29;
 								JjCheckNAdd(6);
 								break;
 							
@@ -1166,8 +1136,8 @@
 							case 6: 
 								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 									break;
-								if (kind > 28)
-									kind = 28;
+								if (kind > 29)
+									kind = 29;
 								JjCheckNAdd(6);
 								break;
 							
@@ -1195,13 +1165,13 @@
 				{
 					curChar = input_stream.ReadChar();
 				}
-				catch (System.IO.IOException e)
+				catch (System.IO.IOException)
 				{
 					return curPos;
 				}
 			}
 		}
-		internal static readonly int[] jjnextStates = new int[]{15, 17, 18, 29, 32, 23, 33, 30, 20, 21, 32, 23, 33, 31, 34, 27, 2, 4, 5, 0, 1};
+		internal static readonly int[] jjnextStates = new int[]{15, 16, 18, 29, 32, 23, 33, 30, 20, 21, 32, 23, 33, 31, 34, 27, 2, 4, 5, 0, 1};
 		private static bool JjCanMove_0(int hiByte, int i1, int i2, ulong l1, ulong l2)
 		{
 			switch (hiByte)
@@ -1217,24 +1187,64 @@
 				
 			}
 		}
-		public static readonly System.String[] jjstrLiteralImages = new System.String[]{"", null, null, null, null, null, null, null, null, null, "\x002B", "\x002D", "\x0028", "\x0029", "\x003A", "\x002A", "\x005E", null, null, null, null, null, "\x005B", "\x007B", null, "\x0054\x004F", "\x005D", null, null, "\x0054\x004F", "\x007D", null, null};
-		public static readonly System.String[] lexStateNames = new System.String[]{"Boost", "RangeEx", "RangeIn", "DEFAULT"};
-		public static readonly int[] jjnewLexState = new int[]{- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, 0, - 1, - 1, - 1, - 1, - 1, 2, 1, 3, - 1, 3, - 1, - 1, - 1, 3, - 1, - 1};
-		internal static readonly ulong[] jjtoToken = new ulong[]{0x1ffffff81L};
-		internal static readonly long[] jjtoSkip = new long[]{0x40L};
+
+        /// <summary>
+        /// Token literal values.
+        /// </summary>
+		public static readonly System.String[] jjstrLiteralImages = new System.String[] {
+            "", null, null, null, null, null, null, null, null, null, null, "\x002B", "\x002D",
+            "\x0028", "\x0029", "\x003A", "\x002A", "\x005E", null, null, null, null, null, "\x005B", "\x007B",
+            null, "\x0054\x004F", "\x005D", null, null, "\x0054\x004F", "\x007D", null, null
+        };
+
+        /// <summary>
+        /// Lexer state names.
+        /// </summary>
+		public static readonly System.String[] lexStateNames = new System.String[] {
+            "Boost",
+            "RangeEx",
+            "RangeIn",
+            "DEFAULT"
+        };
+
+        /// <summary>
+        /// Lex state array.
+        /// </summary>
+		public static readonly int[] jjnewLexState = new int[] {
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 2, 1,
+            3, -1, 3, -1, -1, -1, 3, -1, -1
+        };
+
+		internal static readonly ulong[] jjtoToken = new ulong[]{0x3ffffff01L};
+		internal static readonly long[] jjtoSkip = new long[]{0x80L};
 		protected internal CharStream input_stream;
 		private uint[] jjrounds = new uint[36];
 		private int[] jjstateSet = new int[72];
 		protected internal char curChar;
+        /// <summary>
+        /// Constructor.
+        /// </summary>
+        /// <param name="stream"></param>
 		public QueryParserTokenManager(CharStream stream)
 		{
 			InitBlock();
 			input_stream = stream;
 		}
-		public QueryParserTokenManager(CharStream stream, int lexState) : this(stream)
+
+        /// <summary>
+        /// Constructor.
+        /// </summary>
+        /// <param name="stream"></param>
+        public QueryParserTokenManager(CharStream stream, int lexState)
+            : this(stream)
 		{
 			SwitchTo(lexState);
 		}
+
+        /// <summary>
+        /// Reinitialise parser.
+        /// </summary>
+        /// <param name="stream"></param>
 		public virtual void  ReInit(CharStream stream)
 		{
 			jjmatchedPos = jjnewStateCnt = 0;
@@ -1249,11 +1259,22 @@
 			for (i = 36; i-- > 0; )
 				jjrounds[i] = 0x80000000;
 		}
+
+        /// <summary>
+        /// Reinitialise parser.
+        /// </summary>
+        /// <param name="stream"></param>
+        /// <param name="lexState"></param>
 		public virtual void  ReInit(CharStream stream, int lexState)
 		{
 			ReInit(stream);
 			SwitchTo(lexState);
 		}
+
+        /// <summary>
+        /// Switch to specified lex state.
+        /// </summary>
+        /// <param name="lexState"></param>
 		public virtual void  SwitchTo(int lexState)
 		{
 			if (lexState >= 4 || lexState < 0)
@@ -1264,14 +1285,18 @@
 		
 		protected internal virtual Token JjFillToken()
 		{
-			Token t = Token.NewToken(jjmatchedKind);
-			t.kind = jjmatchedKind;
-			System.String im = jjstrLiteralImages[jjmatchedKind];
-			t.image = (im == null) ? input_stream.GetImage() : im;
-			t.beginLine = input_stream.GetBeginLine();
-			t.beginColumn = input_stream.GetBeginColumn();
-			t.endLine = input_stream.GetEndLine();
-			t.endColumn = input_stream.GetEndColumn();
+            string im = jjstrLiteralImages[jjmatchedKind];
+            string curTokenImage = (im == null) ? input_stream.GetImage() : im;
+            int beginLine = input_stream.GetBeginLine();
+            int beginColumn = input_stream.GetBeginColumn();
+            int endLine = input_stream.GetEndLine();
+            int endColumn = input_stream.GetEndColumn();
+            Token t = Token.NewToken(jjmatchedKind, curTokenImage);
+
+			t.beginLine = beginLine;
+			t.beginColumn = beginColumn;
+			t.endLine = endLine;
+			t.endColumn = endColumn;
 			return t;
 		}
 		
@@ -1282,10 +1307,12 @@
 		internal int jjmatchedPos;
 		internal int jjmatchedKind;
 		
+        /// <summary>
+        /// Get the next Token.
+        /// </summary>
+        /// <returns></returns>
 		public virtual Token GetNextToken()
 		{
-			int kind;
-			Token specialToken = null;
 			Token matchedToken;
 			int curPos = 0;
 			
@@ -1295,7 +1322,7 @@
 				{
 					curChar = input_stream.BeginToken();
 				}
-				catch (System.IO.IOException e)
+				catch (System.IO.IOException)
 				{
 					jjmatchedKind = 0;
 					matchedToken = JjFillToken();
@@ -1355,7 +1382,7 @@
 				{
 					input_stream.ReadChar(); input_stream.Backup(1);
 				}
-				catch (System.IO.IOException e1)
+				catch (System.IO.IOException)
 				{
 					EOFSeen = true;
 					error_after = curPos <= 1 ? "" : input_stream.GetImage();
@@ -1377,5 +1404,35 @@
 EOFLoop: ;
 			}
 		}
-	}
+
+        private void JjCheckNAdd(int state)
+        {
+            if (jjrounds[state] != jjround)
+            {
+                jjstateSet[jjnewStateCnt++] = state;
+                jjrounds[state] = jjround;
+            }
+        }
+        private void JjAddStates(int start, int end)
+        {
+            do
+            {
+                jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+            }
+            while (start++ != end);
+        }
+        private void JjCheckNAddTwoStates(int state1, int state2)
+        {
+            JjCheckNAdd(state1);
+            JjCheckNAdd(state2);
+        }
+        private void JjCheckNAddStates(int start, int end)
+        {
+            do
+            {
+                JjCheckNAdd(jjnextStates[start]);
+            }
+            while (start++ != end);
+        }
+    }
 }
\ No newline at end of file

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Token.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/Token.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Token.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Token.cs Wed Jul 29 18:04:12 2009
@@ -16,6 +16,7 @@
  */
 
 /* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null */
 
 using System;
 
@@ -32,12 +33,15 @@
 		/// stored in the file ...Constants.java.
 		/// </summary>
 		public int kind;
-		
-		/// <summary> beginLine and beginColumn describe the position of the first character
-		/// of this token; endLine and endColumn describe the position of the
-		/// last character of this token.
-		/// </summary>
-		public int beginLine, beginColumn, endLine, endColumn;
+
+        /// <summary>The line number of the first character of this Token.</summary>
+        public int beginLine;
+        /// <summary>The column number of the first character of this Token.</summary>
+        public int beginColumn;
+        /// <summary>The line number of the last character of this Token.</summary>
+        public int endLine;
+        /// <summary>The column number of the last character of this Token.</summary>
+        public int endColumn;
 		
 		/// <summary> The string image of the token.</summary>
 		public System.String image;
@@ -63,7 +67,44 @@
 		/// is no such token, this field is null.
 		/// </summary>
 		public Token specialToken;
-		
+
+        /// <summary>
+        /// An optional attribute value of the Token.
+        /// Tokens which are not used as syntactic sugar will often contain
+        /// meaningful values that will be used later on by the compiler or
+        /// interpreter. This attribute value is often different from the image.
+        /// Any subclass of Token that actually wants to return a non-null value can
+        /// override this method as appropriate.
+        /// </summary>
+        public object GetValue()
+        {
+            return null;
+        }
+
+        /// <summary>
+        /// No-argument constructor
+        /// </summary>
+        public Token() { }
+
+        /// <summary>
+        /// Constructs a new token for the specified Image.
+        /// </summary>
+        public Token(int kind)
+            : this(kind, null)
+        {
+        }
+
+        /// <summary>
+        /// Constructs a new token for the specified Image and Kind.
+        /// </summary>
+        /// <param name="kind"></param>
+        /// <param name="image"></param>
+        public Token(int kind, String image)
+        {
+            this.kind = kind;
+            this.image = image;
+        }
+
 		/// <summary> Returns the image.</summary>
 		public override System.String ToString()
 		{
@@ -74,21 +115,26 @@
 		/// can create and return subclass objects based on the value of ofKind.
 		/// Simply add the cases to the switch for all those special cases.
 		/// For example, if you have a subclass of Token called IDToken that
-		/// you want to create if ofKind is ID, simlpy add something like :
+		/// you want to create if ofKind is ID, simply add something like :
 		/// 
-		/// case MyParserConstants.ID : return new IDToken();
+		/// case MyParserConstants.ID : return new IDToken(ofKind, image);
 		/// 
 		/// to the following switch statement. Then you can cast matchedToken
 		/// variable to the appropriate type and use it in your lexical actions.
 		/// </summary>
-		public static Token NewToken(int ofKind)
+		public static Token NewToken(int ofKind, String image)
 		{
 			switch (ofKind)
 			{
 				
-				default:  return new Token();
-				
+				default:  return new Token(ofKind, image);
 			}
 		}
+
+        public static Token NewToken(int ofKind)
+        {
+            return NewToken(ofKind, null);
+        }
 	}
-}
\ No newline at end of file
+}
+/* JavaCC - OriginalChecksum=c147cc166a7cf8812c7c39bc8c5eb868 (do not edit this line) */

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/TokenMgrError.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/TokenMgrError.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/TokenMgrError.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/TokenMgrError.cs Wed Jul 29 18:04:12 2009
@@ -16,12 +16,15 @@
  */
 
 /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+/* JavaCCOptions: */
 
 using System;
 
 namespace Lucene.Net.QueryParsers
 {
-	
+    /// <summary>
+    /// Token Manager Error.
+    /// </summary>	
 	[Serializable]
 	public class TokenMgrError : System.ApplicationException
 	{
@@ -113,7 +116,7 @@
 						if ((ch = str[i]) < 0x20 || ch > 0x7e)
 						{
 							System.String s = "0000" + System.Convert.ToString(ch, 16);
-							retval.Append("\\u").Append(s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
+							retval.Append("\\u" + s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
 						}
 						else
 						{
@@ -146,17 +149,36 @@
 		* Constructors of various flavors follow.
 		*/
 		
+        /// <summary>
+        /// No-arg constructor.
+        /// </summary>
 		public TokenMgrError()
 		{
 		}
 		
+        /// <summary>
+        /// Constructor with message and reason.
+        /// </summary>
+        /// <param name="message"></param>
+        /// <param name="reason"></param>
 		public TokenMgrError(System.String message, int reason):base(message)
 		{
 			errorCode = reason;
 		}
 		
+        /// <summary>
+        /// Full constructor.
+        /// </summary>
+        /// <param name="EOFSeen"></param>
+        /// <param name="lexState"></param>
+        /// <param name="errorLine"></param>
+        /// <param name="errorColumn"></param>
+        /// <param name="errorAfter"></param>
+        /// <param name="curChar"></param>
+        /// <param name="reason"></param>
 		public TokenMgrError(bool EOFSeen, int lexState, int errorLine, int errorColumn, System.String errorAfter, char curChar, int reason):this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason)
 		{
 		}
 	}
-}
\ No newline at end of file
+}
+/* JavaCC - OriginalChecksum=186d5bcc64733844c7daab5ad5a6e349 (do not edit this line) */

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/BooleanClause.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/BooleanClause.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/BooleanClause.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/BooleanClause.cs Wed Jul 29 18:04:12 2009
@@ -108,7 +108,7 @@
 		
 		
 		/// <summary>Returns true iff <code>o</code> is equal to this. </summary>
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (!(o is BooleanClause))
 				return false;

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/BooleanQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/BooleanQuery.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/BooleanQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/BooleanQuery.cs Wed Jul 29 18:04:12 2009
@@ -57,7 +57,6 @@
 			}
 		}
 		
-		
 		private static int maxClauseCount = 1024;
 		
 		/// <summary>Thrown when an attempt is made to add more than {@link
@@ -456,7 +455,7 @@
 		
 		public override Query Rewrite(IndexReader reader)
 		{
-			if (clauses.Count == 1)
+			if (minNrShouldMatch == 0 && clauses.Count == 1)
 			{
 				// optimize 1-clause queries
 				BooleanClause c = (BooleanClause) clauses[0];
@@ -510,7 +509,7 @@
 			}
 		}
 		
-		public override System.Object Clone()
+		public override object Clone()
 		{
 			BooleanQuery clone = (BooleanQuery) base.Clone();
 			clone.clauses = (System.Collections.ArrayList) this.clauses.Clone();
@@ -570,7 +569,7 @@
 		}
 		
 		/// <summary>Returns true iff <code>o</code> is equal to this. </summary>
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (!(o is BooleanQuery))
 				return false;

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/CachingSpanFilter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/CachingSpanFilter.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/CachingSpanFilter.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/CachingSpanFilter.cs Wed Jul 29 18:04:12 2009
@@ -44,18 +44,25 @@
 			this.filter = filter;
 		}
 		
+        [System.Obsolete("Use GetDocIdSet(IndexReader) instead")]
 		public override System.Collections.BitArray Bits(IndexReader reader)
 		{
 			SpanFilterResult result = GetCachedResult(reader);
 			return result != null ? result.GetBits() : null;
 		}
+
+        public override DocIdSet GetDocIdSet(IndexReader reader)
+        {
+            SpanFilterResult result = GetCachedResult(reader);
+            return result != null ? result.GetDocIdSet() : null;
+        }
 		
 		private SpanFilterResult GetCachedResult(IndexReader reader)
 		{
 			SpanFilterResult result = null;
 			if (cache == null)
 			{
-				cache = new SupportClass.WeakHashTable();
+				cache = new System.Collections.Hashtable();
 			}
 			
 			lock (cache.SyncRoot)
@@ -82,7 +89,7 @@
 			return "CachingSpanFilter(" + filter + ")";
 		}
 		
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (!(o is CachingSpanFilter))
 				return false;

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/CachingWrapperFilter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/CachingWrapperFilter.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/CachingWrapperFilter.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/CachingWrapperFilter.cs Wed Jul 29 18:04:12 2009
@@ -44,11 +44,12 @@
 			this.filter = filter;
 		}
 		
+        [System.Obsolete("Use GetDocIdSet(IndexReader) instead.")]
 		public override System.Collections.BitArray Bits(IndexReader reader)
 		{
 			if (cache == null)
 			{
-				cache = new SupportClass.WeakHashTable();
+				cache = new System.Collections.Hashtable();
 			}
 			
 			lock (cache.SyncRoot)
@@ -72,12 +73,40 @@
 			return bits;
 		}
 		
+		public override DocIdSet GetDocIdSet(IndexReader reader)
+		{
+			if (cache == null)
+			{
+				cache = new System.Collections.Hashtable();
+			}
+			
+			lock (cache.SyncRoot)
+			{
+				// check cache
+				DocIdSet cached = (DocIdSet) cache[reader];
+				if (cached != null)
+				{
+					return cached;
+				}
+			}
+			
+			DocIdSet docIdSet = filter.GetDocIdSet(reader);
+			
+			lock (cache.SyncRoot)
+			{
+				// update cache
+				cache[reader] = docIdSet;
+			}
+			
+			return docIdSet;
+		}
+
 		public override System.String ToString()
 		{
 			return "CachingWrapperFilter(" + filter + ")";
 		}
 		
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (!(o is CachingWrapperFilter))
 				return false;

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ComplexExplanation.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/ComplexExplanation.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ComplexExplanation.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ComplexExplanation.cs Wed Jul 29 18:04:12 2009
@@ -20,7 +20,10 @@
 namespace Lucene.Net.Search
 {
 	
-	/// <summary>Expert: Describes the score computation for document and query, andcan distinguish a match independent of a positive value. </summary>
+	/// <summary>
+    /// Expert: Describes the score computation for document and query, and
+    /// can distinguish a match independent of a positive value.
+    /// </summary>
 	[Serializable]
 	public class ComplexExplanation : Explanation
 	{
@@ -52,7 +55,7 @@
 			this.match = match;
             this.isMatchSet = true;
 		}
-		/// <summary> Indicates wether or not this Explanation models a good match.
+		/// <summary> Indicates whether or not this Explanation models a good match.
 		/// 
 		/// <p>
 		/// If the match statis is explicitly set (ie: not null) this method

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConjunctionScorer.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/ConjunctionScorer.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConjunctionScorer.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConjunctionScorer.cs Wed Jul 29 18:04:12 2009
@@ -43,7 +43,7 @@
 				
 			}
 			// sort the array
-			public virtual int Compare(System.Object o1, System.Object o2)
+			public virtual int Compare(object o1, object o2)
 			{
 				return ((Scorer) o1).Doc() - ((Scorer) o2).Doc();
 			}
@@ -130,12 +130,12 @@
 			// Keep last scorer in it's last place (it will be the first
 			// to be skipped on), but reverse all of the others so that
 			// they will be skipped on in order of original high skip.
-			int end = (scorers.Length - 1) - 1;
+			int end = (scorers.Length - 1);
 			for (int i = 0; i < (end >> 1); i++)
 			{
 				Scorer tmp = scorers[i];
-				scorers[i] = scorers[end - i];
-				scorers[end - i] = tmp;
+				scorers[i] = scorers[end - i - 1];
+                scorers[end - i - 1] = tmp;
 			}
 			
 			return more;

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConstantScoreQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/ConstantScoreQuery.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConstantScoreQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConstantScoreQuery.cs Wed Jul 29 18:04:12 2009
@@ -22,13 +22,11 @@
 namespace Lucene.Net.Search
 {
 	
-	/// <summary> A query that wraps a filter and simply returns a constant score equal to the
+	/// <summary>
+    /// A query that wraps a filter and simply returns a constant score equal to the
 	/// query boost for every document in the filter.
-	/// 
-	/// 
 	/// </summary>
-	/// <version>  $Id: ConstantScoreQuery.java 564236 2007-08-09 15:21:19Z gsingers $
-	/// </version>
+	/// <version>$Id:$</version>
 	[Serializable]
 	public class ConstantScoreQuery : Query
 	{
@@ -113,7 +111,7 @@
 			{
 				
 				ConstantScorer cs = (ConstantScorer) Scorer(reader);
-				bool exists = cs.bits.Get(doc);
+                bool exists = cs.docIdSetIterator.SkipTo(doc) && cs.docIdSetIterator.Doc() == doc;
 				
 				ComplexExplanation result = new ComplexExplanation();
 				
@@ -152,7 +150,7 @@
 				}
 				
 			}
-			internal System.Collections.BitArray bits;
+            internal DocIdSetIterator docIdSetIterator;
 			internal float theScore;
 			internal int doc = - 1;
 			
@@ -160,18 +158,17 @@
 			{
 				InitBlock(enclosingInstance);
 				theScore = w.GetValue();
-				bits = Enclosing_Instance.filter.Bits(reader);
+                docIdSetIterator = Enclosing_Instance.filter.GetDocIdSet(reader).Iterator();
 			}
 			
 			public override bool Next()
 			{
-				doc = SupportClass.Number.NextSetBit(bits, doc + 1);
-				return doc >= 0;
+				return docIdSetIterator.Next();
 			}
 			
 			public override int Doc()
 			{
-				return doc;
+                return docIdSetIterator.Doc(); ;
 			}
 			
 			public override float Score()
@@ -181,8 +178,7 @@
 			
 			public override bool SkipTo(int target)
 			{
-				doc = SupportClass.Number.NextSetBit(bits, target); // requires JDK 1.4
-				return doc >= 0;
+				return docIdSetIterator.SkipTo(target);
 			}
 			
 			public override Explanation Explain(int doc)
@@ -205,7 +201,7 @@
 		}
 		
 		/// <summary>Returns true if <code>o</code> is equal to this. </summary>
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (this == o)
 				return true;
@@ -222,7 +218,7 @@
 			return filter.GetHashCode() + BitConverter.ToInt32(BitConverter.GetBytes(GetBoost()), 0);
 		}
 
-		override public System.Object Clone()
+		override public object Clone()
 		{
             // {{Aroush-1.9}} is this all that we need to clone?!
             ConstantScoreQuery clone = (ConstantScoreQuery) base.Clone();

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConstantScoreRangeQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/ConstantScoreRangeQuery.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConstantScoreRangeQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/ConstantScoreRangeQuery.cs Wed Jul 29 18:04:12 2009
@@ -16,7 +16,7 @@
  */
 
 using System;
-
+using CompareInfo = System.Globalization.CompareInfo;
 using IndexReader = Lucene.Net.Index.IndexReader;
 
 namespace Lucene.Net.Search
@@ -30,13 +30,8 @@
 	/// If an endpoint is null, it is said to be "open".
 	/// Either or both endpoints may be open.  Open endpoints may not be exclusive
 	/// (you can't select all but the first or last term without explicitly specifying the term to exclude.)
-	/// 
-	/// 
 	/// </summary>
-	/// <version>  $Id: ConstantScoreRangeQuery.java 564236 2007-08-09 15:21:19Z gsingers $
-	/// </version>
-	
-	[Serializable]
+    [Serializable]
 	public class ConstantScoreRangeQuery : Query
 	{
 		private System.String fieldName;
@@ -44,7 +39,7 @@
 		private System.String upperVal;
 		private bool includeLower;
 		private bool includeUpper;
-		
+		private CompareInfo collator;
 		
 		public ConstantScoreRangeQuery(System.String fieldName, System.String lowerVal, System.String upperVal, bool includeLower, bool includeUpper)
 		{
@@ -70,7 +65,13 @@
 			this.includeLower = includeLower;
 			this.includeUpper = includeUpper;
 		}
-		
+
+        public ConstantScoreRangeQuery(string fieldName, string lowerVal, string upperVal, bool includeLower, bool includeUpper, CompareInfo collator)
+            : this(fieldName, lowerVal, upperVal, includeLower, includeUpper)
+        {
+            this.collator = collator;
+        }
+
 		/// <summary>Returns the field name for this query </summary>
 		public virtual System.String GetField()
 		{
@@ -100,7 +101,9 @@
 		public override Query Rewrite(IndexReader reader)
 		{
 			// Map to RangeFilter semantics which are slightly different...
-			RangeFilter rangeFilt = new RangeFilter(fieldName, lowerVal != null ? lowerVal : "", upperVal, (System.Object) lowerVal == (System.Object) "" ? false : includeLower, upperVal == null ? false : includeUpper);
+			RangeFilter rangeFilt = new RangeFilter(fieldName, lowerVal != null ? lowerVal : "", upperVal,
+                (object) lowerVal == (object) "" ? false : includeLower,
+                upperVal == null ? false : includeUpper, collator);
 			Query q = new ConstantScoreQuery(rangeFilt);
 			q.SetBoost(GetBoost());
 			return q;
@@ -125,7 +128,7 @@
 		}
 		
 		/// <summary>Returns true if <code>o</code> is equal to this. </summary>
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (this == o)
 				return true;
@@ -133,7 +136,10 @@
 				return false;
 			ConstantScoreRangeQuery other = (ConstantScoreRangeQuery) o;
 			
-			if ((System.Object) this.fieldName != (System.Object) other.fieldName || this.includeLower != other.includeLower || this.includeUpper != other.includeUpper)
+			if ((object) this.fieldName != (object) other.fieldName ||
+                this.includeLower != other.includeLower ||
+                this.includeUpper != other.includeUpper ||
+                (this.collator != null && !this.collator.Equals(other.collator)))
 			{
 				return false;
 			}
@@ -155,10 +161,11 @@
 			h ^= ((h << 17) | (SupportClass.Number.URShift(h, 16))); // a reversible (one to one) 32 bit mapping mix
 			h ^= (upperVal != null ? (upperVal.GetHashCode()) : 0x5a695a69);
 			h ^= (includeLower ? 0x665599aa : 0) ^ (includeUpper ? unchecked((int) 0x99aa5566) : 0);    // {{Aroush-1.9}} Is this OK?!
+            h ^= collator != null ? collator.GetHashCode() : 0;
 			return h;
 		}
 		
-		override public System.Object Clone()
+		override public object Clone()
 		{
             // {{Aroush-1.9}} is this all that we need to clone?!
             ConstantScoreRangeQuery clone = (ConstantScoreRangeQuery) base.Clone();
@@ -167,6 +174,8 @@
             clone.upperVal = (System.String) this.upperVal.Clone();
             clone.includeLower = this.includeLower;
             clone.includeUpper = this.includeUpper;
+            if (this.collator != null)
+                clone.collator = this.collator; // {{DSale-2.4}} need to clone collator?
             return clone;
         }
 	}

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DisjunctionMaxQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/DisjunctionMaxQuery.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DisjunctionMaxQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DisjunctionMaxQuery.cs Wed Jul 29 18:04:12 2009
@@ -35,8 +35,6 @@
 	/// include this term in only the best of those multiple fields, without confusing this with the better case of two different terms
 	/// in the multiple fields.
 	/// </summary>
-	/// <author>  Chuck Williams
-	/// </author>
 	[Serializable]
 	public class DisjunctionMaxQuery : Query, System.ICloneable
 	{
@@ -48,7 +46,7 @@
 		private float tieBreakerMultiplier = 0.0f;
 		
 		/// <summary>Creates a new empty DisjunctionMaxQuery.  Use add() to add the subqueries.</summary>
-		/// <param name="tieBreakerMultiplier">this score of each non-maximum disjunct for a document is multiplied by this weight
+		/// <param name="tieBreakerMultiplier">the score of each non-maximum disjunct for a document is multiplied by this weight
 		/// and added into the final score.  If non-zero, the value should be small, on the order of 0.1, which says that
 		/// 10 occurrences of word in a lower-scored field that is also in a higher scored field is just as good as a unique
 		/// word in the lower scored field (i.e., one that is not in any higher scored field.
@@ -240,7 +238,7 @@
 		/// <summary>Create a shallow copy of us -- used in rewriting if necessary</summary>
 		/// <returns> a copy of us (but reuse, don't copy, our subqueries) 
 		/// </returns>
-		public override System.Object Clone()
+		public override object Clone()
 		{
 			DisjunctionMaxQuery clone = (DisjunctionMaxQuery) base.Clone();
 			return clone;
@@ -300,7 +298,7 @@
 		/// </param>
 		/// <returns> true iff o is a DisjunctionMaxQuery with the same boost and the same subqueries, in the same order, as us
 		/// </returns>
-		public  override bool Equals(System.Object o)
+		public  override bool Equals(object o)
 		{
 			if (!(o is DisjunctionMaxQuery))
 				return false;

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DisjunctionMaxScorer.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/DisjunctionMaxScorer.cs?rev=798995&r1=798994&r2=798995&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DisjunctionMaxScorer.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DisjunctionMaxScorer.cs Wed Jul 29 18:04:12 2009
@@ -25,8 +25,6 @@
 	/// by the subquery scorers that generate that document, plus tieBreakerMultiplier times the sum of the scores
 	/// for the other subqueries that generate the document.
 	/// </summary>
-	/// <author>  Chuck Williams
-	/// </author>
 	class DisjunctionMaxScorer : Scorer
 	{
 		

Added: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DocIdSet.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/DocIdSet.cs?rev=798995&view=auto
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DocIdSet.cs (added)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/DocIdSet.cs Wed Jul 29 18:04:12 2009
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Lucene.Net.Search
+{
+    /// <summary>
+    /// A DocIdSet contains a set of doc ids.  Implementing classes
+    /// must provide a DocIdSetIterator to access the set.
+    /// </summary>
+    public abstract class DocIdSet
+    {
+        public abstract DocIdSetIterator Iterator();
+    }
+}