lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aro...@apache.org
Subject svn commit: r671403 - in /incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser: CharStream.cs MultiFieldQueryParser.cs Package.html ParseException.cs QueryParser.JJ QueryParser.cs QueryParserTokenManager.cs Token.cs TokenMgrError.cs
Date Wed, 25 Jun 2008 02:51:48 GMT
Author: aroush
Date: Tue Jun 24 19:51:48 2008
New Revision: 671403

URL: http://svn.apache.org/viewvc?rev=671403&view=rev
Log:
Release: Apache Lucene.Net.2.3.1 build 001 "Alpha"

Modified:
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/CharStream.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/MultiFieldQueryParser.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Package.html
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/ParseException.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.JJ
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParserTokenManager.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Token.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/TokenMgrError.cs

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/CharStream.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/CharStream.cs?rev=671403&r1=671402&r2=671403&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/CharStream.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/CharStream.cs Tue Jun 24 19:51:48 2008
@@ -55,7 +55,7 @@
 		/// <summary> Returns the line number of the character last read.</summary>
 		/// <deprecated> 
 		/// </deprecated>
-		/// <seealso cref="#getEndLine">
+		/// <seealso cref="GetEndLine">
 		/// </seealso>
 		int GetLine();
 		

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/MultiFieldQueryParser.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/MultiFieldQueryParser.cs?rev=671403&r1=671402&r2=671403&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/MultiFieldQueryParser.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/MultiFieldQueryParser.cs Tue Jun 24 19:51:48 2008
@@ -29,16 +29,14 @@
 	
 	/// <summary> A QueryParser which constructs queries to search multiple fields.
 	/// 
+	/// 
 	/// </summary>
-	/// <author>  <a href="mailto:kelvin@relevanz.com">Kelvin Tan</a>, Daniel Naber
-	/// </author>
-	/// <version>  $Revision: 472959 $
+	/// <version>  $Revision: 564236 $
 	/// </version>
 	public class MultiFieldQueryParser : QueryParser
 	{
-		
-		private System.String[] fields;
-		private System.Collections.IDictionary boosts;
+		protected internal System.String[] fields;
+		protected internal System.Collections.IDictionary boosts;
 		
 		/// <summary> Creates a MultiFieldQueryParser. 
 		/// Allows passing of a map with term to Boost, and the boost to apply to each term.
@@ -90,7 +88,7 @@
 		/// <p>In other words, all the query's terms must appear, but it doesn't matter in
 		/// what fields they appear.</p>
 		/// </summary>
-		public MultiFieldQueryParser(System.String[] fields, Analyzer analyzer):base(null, analyzer)
+		public MultiFieldQueryParser(System.String[] fields, Analyzer analyzer) : base(null, analyzer)
 		{
 			this.fields = fields;
 		}
@@ -102,7 +100,7 @@
 				System.Collections.ArrayList clauses = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
 				for (int i = 0; i < fields.Length; i++)
 				{
-					Query q = base.GetFieldQuery(fields[i], queryText);
+					Query q = GetFieldQuery(fields[i], queryText);
 					if (q != null)
 					{
 						//If the user passes a map of boosts
@@ -149,7 +147,7 @@
 				System.Collections.ArrayList clauses = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
 				for (int i = 0; i < fields.Length; i++)
 				{
-					clauses.Add(new BooleanClause(base.GetFuzzyQuery(fields[i], termStr, minSimilarity), BooleanClause.Occur.SHOULD));
+					clauses.Add(new BooleanClause(GetFuzzyQuery(fields[i], termStr, minSimilarity), BooleanClause.Occur.SHOULD));
 				}
 				return GetBooleanQuery(clauses, true);
 			}
@@ -163,7 +161,7 @@
 				System.Collections.ArrayList clauses = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
 				for (int i = 0; i < fields.Length; i++)
 				{
-					clauses.Add(new BooleanClause(base.GetPrefixQuery(fields[i], termStr), BooleanClause.Occur.SHOULD));
+					clauses.Add(new BooleanClause(GetPrefixQuery(fields[i], termStr), BooleanClause.Occur.SHOULD));
 				}
 				return GetBooleanQuery(clauses, true);
 			}
@@ -177,7 +175,7 @@
 				System.Collections.ArrayList clauses = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
 				for (int i = 0; i < fields.Length; i++)
 				{
-					clauses.Add(new BooleanClause(base.GetWildcardQuery(fields[i], termStr), BooleanClause.Occur.SHOULD));
+					clauses.Add(new BooleanClause(GetWildcardQuery(fields[i], termStr), BooleanClause.Occur.SHOULD));
 				}
 				return GetBooleanQuery(clauses, true);
 			}
@@ -192,16 +190,13 @@
 				System.Collections.ArrayList clauses = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
 				for (int i = 0; i < fields.Length; i++)
 				{
-					clauses.Add(new BooleanClause(base.GetRangeQuery(fields[i], part1, part2, inclusive), BooleanClause.Occur.SHOULD));
+					clauses.Add(new BooleanClause(GetRangeQuery(fields[i], part1, part2, inclusive), BooleanClause.Occur.SHOULD));
 				}
 				return GetBooleanQuery(clauses, true);
 			}
 			return base.GetRangeQuery(field, part1, part2, inclusive);
 		}
 		
-		
-		
-		
 		/// <summary> Parses a query which searches on the fields specified.
 		/// <p>
 		/// If x fields are specified, this effectively constructs:
@@ -230,12 +225,14 @@
 			{
 				QueryParser qp = new QueryParser(fields[i], analyzer);
 				Query q = qp.Parse(queries[i]);
-				bQuery.Add(q, BooleanClause.Occur.SHOULD);
+				if (q != null && (!(q is BooleanQuery) || ((BooleanQuery) q).GetClauses().Length > 0))
+				{
+					bQuery.Add(q, BooleanClause.Occur.SHOULD);
+				}
 			}
 			return bQuery;
 		}
 		
-		
 		/// <summary> Parses a query, searching on the fields specified.
 		/// Use this if you need to specify certain fields as required,
 		/// and others as prohibited.
@@ -279,12 +276,14 @@
 			{
 				QueryParser qp = new QueryParser(fields[i], analyzer);
 				Query q = qp.Parse(query);
-				bQuery.Add(q, flags[i]);
+				if (q != null && (!(q is BooleanQuery) || ((BooleanQuery) q).GetClauses().Length > 0))
+				{
+					bQuery.Add(q, flags[i]);
+				}
 			}
 			return bQuery;
 		}
 		
-		
 		/// <summary> Parses a query, searching on the fields specified.
 		/// Use this if you need to specify certain fields as required,
 		/// and others as prohibited.
@@ -329,7 +328,10 @@
 			{
 				QueryParser qp = new QueryParser(fields[i], analyzer);
 				Query q = qp.Parse(queries[i]);
-				bQuery.Add(q, flags[i]);
+				if (q != null && (!(q is BooleanQuery) || ((BooleanQuery) q).GetClauses().Length > 0))
+				{
+					bQuery.Add(q, flags[i]);
+				}
 			}
 			return bQuery;
 		}

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Package.html
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/Package.html?rev=671403&r1=671402&r2=671403&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Package.html (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/Package.html Tue Jun 24 19:51:48 2008
@@ -1,15 +1,15 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="Author" content="Doug Cutting">
-</head>
-<body>
-A simple query parser implemented with JavaCC.
-<p>Note that JavaCC defines lots of public classes, methods and fields
-that do not need to be public.&nbsp; These clutter the documentation.&nbsp;
-Sorry.
-<p>Note that because JavaCC defines a class named <tt>Token</tt>, <tt>Lucene.Net.Analysis.Token</tt>
-must always be fully qualified in source code in this package.
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="Doug Cutting">
+</head>
+<body>
+A simple query parser implemented with JavaCC.
+<p>Note that JavaCC defines lots of public classes, methods and fields
+that do not need to be public.&nbsp; These clutter the documentation.&nbsp;
+Sorry.
+<p>Note that because JavaCC defines a class named <tt>Token</tt>, <tt>org.apache.lucene.analysis.Token</tt>
+must always be fully qualified in source code in this package.
+</body>
+</html>

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/ParseException.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/ParseException.cs?rev=671403&r1=671402&r2=671403&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/ParseException.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/ParseException.cs Tue Jun 24 19:51:48 2008
@@ -215,7 +215,7 @@
 						if ((ch = str[i]) < 0x20 || ch > 0x7e)
 						{
 							System.String s = "0000" + System.Convert.ToString(ch, 16);
-							retval.Append("\\u" + s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
+							retval.Append("\\u").Append(s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
 						}
 						else
 						{

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.JJ
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/QueryParser/QueryParser.JJ?rev=671403&r1=671402&r2=671403&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.JJ (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/QueryParser/QueryParser.JJ Tue Jun 24 19:51:48 2008
@@ -23,17 +23,17 @@
 
 PARSER_BEGIN(QueryParser)
 
-package Lucene.Net.QueryParsers;
+package org.apache.lucene.queryParser;
 
 import java.util.Vector;
 import java.io.*;
 import java.text.*;
 import java.util.*;
-import Lucene.Net.Index.Term;
-import Lucene.Net.Analysis.*;
-import Lucene.Net.Documents.*;
-import Lucene.Net.Search.*;
-import Lucene.Net.Util.Parameter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.analysis.*;
+import org.apache.lucene.document.*;
+import org.apache.lucene.search.*;
+import org.apache.lucene.util.Parameter;
 
 /**
  * This class is generated by JavaCC.  The most important method is
@@ -77,7 +77,7 @@
  * By default a date is converted into a search term using the deprecated
  * {@link DateField} for compatibility reasons.
  * To use the new {@link DateTools} to convert dates, a
- * {@link DateTools.Resolution} has to be set.
+ * {@link org.apache.lucene.document.DateTools.Resolution} has to be set.
  * </p>
  * <p>
  * The date resolution that shall be used for RangeQueries can be set
@@ -124,6 +124,7 @@
   boolean lowercaseExpandedTerms = true;
   boolean useOldRangeQuery= false;  
   boolean allowLeadingWildcard = false;
+  boolean enablePositionIncrements = false;
 
   Analyzer analyzer;
   String field;
@@ -159,14 +160,16 @@
     field = f;
   }
 
-  /** Parses a query string, returning a {@link Lucene.Net.Search.Query}.
+  /** Parses a query string, returning a {@link org.apache.lucene.search.Query}.
    *  @param query  the query string to be parsed.
    *  @throws ParseException if the parsing fails
    */
   public Query parse(String query) throws ParseException {
     ReInit(new FastCharStream(new StringReader(query)));
     try {
-      return Query(field);
+	  // TopLevelQuery is a Query followed by the end-of-input (EOF)
+      Query res = TopLevelQuery(field);
+      return res!=null ? res : new BooleanQuery();
     }
     catch (ParseException tme) {
       // rethrow to include the original query:
@@ -242,22 +245,48 @@
 
 
   /**
-   * Set to <code>true</code> to allow <code>*</code> and <code>?</code> as the first character 
-   * of a PrefixQuery and WildcardQuery. Note that this can produce very slow
-   * queries on big indexes. Default: false.
+   * Set to <code>true</code> to allow leading wildcard characters.
+   * <p>
+   * When set, <code>*</code> or <code>?</code> are allowed as 
+   * the first character of a PrefixQuery and WildcardQuery.
+   * Note that this can produce very slow
+   * queries on big indexes. 
+   * <p>
+   * Default: false.
    */
   public void setAllowLeadingWildcard(boolean allowLeadingWildcard) {
     this.allowLeadingWildcard = allowLeadingWildcard;
   }
 
   /**
-   * @see #setAllowLeadingWildcard
+   * @see #setAllowLeadingWildcard(boolean)
    */
   public boolean getAllowLeadingWildcard() {
     return allowLeadingWildcard;
   }
 
   /**
+   * Set to <code>true</code> to enable position increments in result query.
+   * <p>
+   * When set, result phrase and multi-phrase queries will
+   * be aware of position increments.
+   * Useful when e.g. a StopFilter increases the position increment of
+   * the token that follows an omitted token.
+   * <p>
+   * Default: false.
+   */
+  public void setEnablePositionIncrements(boolean enable) {
+    this.enablePositionIncrements = enable;
+  }
+
+  /**
+   * @see #setEnablePositionIncrements(boolean)
+   */
+  public boolean getEnablePositionIncrements() {
+    return enablePositionIncrements;
+  }
+
+  /**
    * Sets the boolean operator of the QueryParser.
    * In default mode (<code>OR_OPERATOR</code>) terms without any modifiers
    * are considered optional: for example <code>capital of Hungary</code> is equal to
@@ -345,7 +374,7 @@
   /**
    * Sets the date resolution used by RangeQueries for a specific field.
    *  
-   * @param field field for which the date resolution is to be set 
+   * @param fieldName field for which the date resolution is to be set 
    * @param dateResolution date resolution to set
    */
   public void setDateResolution(String fieldName, DateTools.Resolution dateResolution) {
@@ -446,7 +475,7 @@
 
     TokenStream source = analyzer.tokenStream(field, new StringReader(queryText));
     Vector v = new Vector();
-    Lucene.Net.Analysis.Token t;
+    org.apache.lucene.analysis.Token t;
     int positionCount = 0;
     boolean severalTokensAtSamePosition = false;
 
@@ -475,7 +504,7 @@
     if (v.size() == 0)
       return null;
     else if (v.size() == 1) {
-      t = (Lucene.Net.Analysis.Token) v.elementAt(0);
+      t = (org.apache.lucene.analysis.Token) v.elementAt(0);
       return new TermQuery(new Term(field, t.termText()));
     } else {
       if (severalTokensAtSamePosition) {
@@ -483,7 +512,7 @@
           // no phrase query:
           BooleanQuery q = new BooleanQuery(true);
           for (int i = 0; i < v.size(); i++) {
-            t = (Lucene.Net.Analysis.Token) v.elementAt(i);
+            t = (org.apache.lucene.analysis.Token) v.elementAt(i);
             TermQuery currentQuery = new TermQuery(
                 new Term(field, t.termText()));
             q.add(currentQuery, BooleanClause.Occur.SHOULD);
@@ -495,27 +524,42 @@
           MultiPhraseQuery mpq = new MultiPhraseQuery();
           mpq.setSlop(phraseSlop);          
           List multiTerms = new ArrayList();
+          int position = -1;
           for (int i = 0; i < v.size(); i++) {
-            t = (Lucene.Net.Analysis.Token) v.elementAt(i);
-            if (t.getPositionIncrement() == 1 && multiTerms.size() > 0) {
-              mpq.add((Term[])multiTerms.toArray(new Term[0]));
+            t = (org.apache.lucene.analysis.Token) v.elementAt(i);
+            if (t.getPositionIncrement() > 0 && multiTerms.size() > 0) {
+              if (enablePositionIncrements) {
+                mpq.add((Term[])multiTerms.toArray(new Term[0]),position);
+              } else {
+                mpq.add((Term[])multiTerms.toArray(new Term[0]));
+              }
               multiTerms.clear();
             }
+            position += t.getPositionIncrement();
             multiTerms.add(new Term(field, t.termText()));
           }
-          mpq.add((Term[])multiTerms.toArray(new Term[0]));
+          if (enablePositionIncrements) {
+            mpq.add((Term[])multiTerms.toArray(new Term[0]),position);
+          } else {
+            mpq.add((Term[])multiTerms.toArray(new Term[0]));
+          }
           return mpq;
         }
       }
       else {
-        PhraseQuery q = new PhraseQuery();
-        q.setSlop(phraseSlop);
+        PhraseQuery pq = new PhraseQuery();
+        pq.setSlop(phraseSlop);
+        int position = -1;
         for (int i = 0; i < v.size(); i++) {
-          q.add(new Term(field, ((Lucene.Net.Analysis.Token) 
-              v.elementAt(i)).termText()));
-
+          t = (org.apache.lucene.analysis.Token) v.elementAt(i);
+          if (enablePositionIncrements) {
+            position += t.getPositionIncrement();
+            pq.add(new Term(field, t.termText()),position);
+          } else {
+            pq.add(new Term(field, t.termText()));
+          }
         }
-        return q;
+        return pq;
       }
     }
   }
@@ -632,9 +676,12 @@
   protected Query getBooleanQuery(Vector clauses, boolean disableCoord)
     throws ParseException
   {
+    if (clauses.size()==0) {
+      return null; // all clause words were filtered away by the analyzer.
+    }
     BooleanQuery query = new BooleanQuery(disableCoord);
     for (int i = 0; i < clauses.size(); i++) {
-  query.add((BooleanClause)clauses.elementAt(i));
+      query.add((BooleanClause)clauses.elementAt(i));
     }
     return query;
   }
@@ -818,10 +865,10 @@
     StringBuffer sb = new StringBuffer();
     for (int i = 0; i < s.length(); i++) {
       char c = s.charAt(i);
-      // NOTE: keep this in sync with _ESCAPED_CHAR below!
+      // These characters are part of the query syntax and must be escaped
       if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':'
         || c == '^' || c == '[' || c == ']' || c == '\"' || c == '{' || c == '}' || c == '~'
-        || c == '*' || c == '?') {
+        || c == '*' || c == '?' || c == '|' || c == '&') {
         sb.append('\\');
       }
       sb.append(c);
@@ -830,17 +877,17 @@
   }
 
   /**
-   * Command line tool to test QueryParser, using {@link Lucene.Net.Analysis.SimpleAnalyzer}.
+   * Command line tool to test QueryParser, using {@link org.apache.lucene.analysis.SimpleAnalyzer}.
    * Usage:<br>
-   * <code>java Lucene.Net.QueryParsers.QueryParser &lt;input&gt;</code>
+   * <code>java org.apache.lucene.queryParser.QueryParser &lt;input&gt;</code>
    */
   public static void main(String[] args) throws Exception {
     if (args.length == 0) {
-      System.out.println("Usage: java Lucene.Net.QueryParsers.QueryParser <input>");
+      System.out.println("Usage: java org.apache.lucene.queryParser.QueryParser <input>");
       System.exit(0);
     }
     QueryParser qp = new QueryParser("field",
-                           new Lucene.Net.Analysis.SimpleAnalyzer());
+                           new org.apache.lucene.analysis.SimpleAnalyzer());
     Query q = qp.parse(args[0]);
     System.out.println(q.toString("field"));
   }
@@ -854,11 +901,10 @@
 
 <*> TOKEN : {
   <#_NUM_CHAR:   ["0"-"9"] >
-// NOTE: keep this in sync with escape(String) above!
-| <#_ESCAPED_CHAR: "\\" [ "\\", "+", "-", "!", "(", ")", ":", "^",
-                          "[", "]", "\"", "{", "}", "~", "*", "?" ] >
+// every character that follows a backslash is considered as an escaped character
+| <#_ESCAPED_CHAR: "\\" ~[] >
 | <#_TERM_START_CHAR: ( ~[ " ", "\t", "\n", "\r", "+", "-", "!", "(", ")", ":", "^",
-                           "[", "]", "\"", "{", "}", "~", "*", "?" ]
+                           "[", "]", "\"", "{", "}", "~", "*", "?", "\\" ]
                        | <_ESCAPED_CHAR> ) >
 | <#_TERM_CHAR: ( <_TERM_START_CHAR> | <_ESCAPED_CHAR> | "-" | "+" ) >
 | <#_WHITESPACE: ( " " | "\t" | "\n" | "\r") >
@@ -879,10 +925,10 @@
 | <COLON:     ":" >
 | <STAR:      "*" >
 | <CARAT:     "^" > : Boost
-| <QUOTED:     "\"" (~["\""] | "\\\"")+ "\"">
+| <QUOTED:     "\"" (~["\""] | "\\\"")* "\"">
 | <TERM:      <_TERM_START_CHAR> (<_TERM_CHAR>)*  >
 | <FUZZY_SLOP:     "~" ( (<_NUM_CHAR>)+ ( "." (<_NUM_CHAR>)+ )? )? >
-| <PREFIXTERM:  (<_TERM_START_CHAR> | "*") (<_TERM_CHAR>)* "*" >
+| <PREFIXTERM:  ("*") | ( <_TERM_START_CHAR> (<_TERM_CHAR>)* "*" ) >
 | <WILDTERM:  (<_TERM_START_CHAR> | [ "*", "?" ]) (<_TERM_CHAR> | ( [ "*", "?" ] ))* >
 | <RANGEIN_START: "[" > : RangeIn
 | <RANGEEX_START: "{" > : RangeEx
@@ -932,6 +978,18 @@
   { return ret; }
 }
 
+// This makes sure that there is no garbage after the query string
+Query TopLevelQuery(String field) : 
+{
+	Query q;
+}
+{
+	q=Query(field) <EOF>
+	{
+		return q;
+	}
+}
+
 Query Query(String field) :
 {
   Vector clauses = new Vector();

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=671403&r1=671402&r2=671403&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 Tue Jun 24 19:51:48 2008
@@ -19,12 +19,12 @@
 
 using System;
 
+using Lucene.Net.Documents;
 using Term = Lucene.Net.Index.Term;
+using Parameter = Lucene.Net.Util.Parameter;
 using Lucene.Net.Analysis;
-using Lucene.Net.Documents;
 using Lucene.Net.Search;
 using Searchable = Lucene.Net.Search.Searchable;
-using Parameter = Lucene.Net.Util.Parameter;
 
 namespace Lucene.Net.QueryParsers
 {
@@ -70,7 +70,7 @@
 	/// By default a date is converted into a search term using the deprecated
 	/// {@link DateField} for compatibility reasons.
 	/// To use the new {@link DateTools} to convert dates, a
-	/// {@link DateTools.Resolution} has to be set.
+	/// {@link Lucene.Net.Documents.DateTools.Resolution} has to be set.
 	/// </p>
 	/// <p>
 	/// The date resolution that shall be used for RangeQueries can be set
@@ -128,6 +128,7 @@
 		internal bool lowercaseExpandedTerms = true;
 		internal bool useOldRangeQuery = false;
 		internal bool allowLeadingWildcard = false;
+		internal bool enablePositionIncrements = false;
 		
 		internal Analyzer analyzer;
 		internal System.String field;
@@ -175,7 +176,9 @@
 			ReInit(new FastCharStream(new System.IO.StringReader(query)));
 			try
 			{
-				return Query(field);
+				// TopLevelQuery is a Query followed by the end-of-input (EOF)
+				Query res = TopLevelQuery(field);
+				return res != null ? res : new BooleanQuery();
 			}
 			catch (ParseException tme)
 			{
@@ -251,22 +254,48 @@
 		}
 		
 		
-		/// <summary> Set to <code>true</code> to allow <code>*</code> and <code>?</code> as the first character 
-		/// of a PrefixQuery and WildcardQuery. Note that this can produce very slow
-		/// queries on big indexes. Default: false.
+		/// <summary> Set to <code>true</code> to allow leading wildcard characters.
+		/// <p>
+		/// When set, <code>*</code> or <code>?</code> are allowed as 
+		/// the first character of a PrefixQuery and WildcardQuery.
+		/// Note that this can produce very slow
+		/// queries on big indexes. 
+		/// <p>
+		/// Default: false.
 		/// </summary>
 		public virtual void  SetAllowLeadingWildcard(bool allowLeadingWildcard)
 		{
 			this.allowLeadingWildcard = allowLeadingWildcard;
 		}
 		
-		/// <seealso cref="#setAllowLeadingWildcard">
+		/// <seealso cref="SetAllowLeadingWildcard(boolean)">
 		/// </seealso>
 		public virtual bool GetAllowLeadingWildcard()
 		{
 			return allowLeadingWildcard;
 		}
 		
+		/// <summary> Set to <code>true</code> to enable position increments in result query.
+		/// <p>
+		/// When set, result phrase and multi-phrase queries will
+		/// be aware of position increments.
+		/// Useful when e.g. a StopFilter increases the position increment of
+		/// the token that follows an omitted token.
+		/// <p>
+		/// Default: false.
+		/// </summary>
+		public virtual void  SetEnablePositionIncrements(bool enable)
+		{
+			this.enablePositionIncrements = enable;
+		}
+		
+		/// <seealso cref="SetEnablePositionIncrements(boolean)">
+		/// </seealso>
+		public virtual bool GetEnablePositionIncrements()
+		{
+			return enablePositionIncrements;
+		}
+		
 		/// <summary> Sets the boolean operator of the QueryParser.
 		/// In default mode (<code>OR_OPERATOR</code>) terms without any modifiers
 		/// are considered optional: for example <code>capital of Hungary</code> is equal to
@@ -319,7 +348,7 @@
 		}
 		
 		
-		/// <seealso cref="#SetUseOldRangeQuery(boolean)">
+		/// <seealso cref="SetUseOldRangeQuery(boolean)">
 		/// </seealso>
 		public virtual bool GetUseOldRangeQuery()
 		{
@@ -354,7 +383,7 @@
 		/// <summary> Sets the date resolution used by RangeQueries for a specific field.
 		/// 
 		/// </summary>
-		/// <param name="field">field for which the date resolution is to be set 
+		/// <param name="fieldName">field for which the date resolution is to be set 
 		/// </param>
 		/// <param name="dateResolution">date resolution to set
 		/// </param>
@@ -529,29 +558,55 @@
 						MultiPhraseQuery mpq = new MultiPhraseQuery();
 						mpq.SetSlop(phraseSlop);
 						System.Collections.ArrayList multiTerms = new System.Collections.ArrayList();
+						int position = - 1;
 						for (int i = 0; i < v.Count; i++)
 						{
 							t = (Lucene.Net.Analysis.Token) v[i];
-							if (t.GetPositionIncrement() == 1 && multiTerms.Count > 0)
+							if (t.GetPositionIncrement() > 0 && multiTerms.Count > 0)
 							{
-								mpq.Add((Term[]) multiTerms.ToArray(typeof(Term)));
+								if (enablePositionIncrements)
+								{
+									mpq.Add((Term[])multiTerms.ToArray(typeof(Term)), position);
+								}
+								else
+								{
+									mpq.Add((Term[])multiTerms.ToArray(typeof(Term)));
+								}
 								multiTerms.Clear();
 							}
+							position += t.GetPositionIncrement();
 							multiTerms.Add(new Term(field, t.TermText()));
 						}
-						mpq.Add((Term[]) multiTerms.ToArray(typeof(Term)));
+						if (enablePositionIncrements)
+						{
+							mpq.Add((Term[])multiTerms.ToArray(typeof(Term)), position);
+						}
+						else
+						{
+							mpq.Add((Term[])multiTerms.ToArray(typeof(Term)));
+						}
 						return mpq;
 					}
 				}
 				else
 				{
-					PhraseQuery q = new PhraseQuery();
-					q.SetSlop(phraseSlop);
+					PhraseQuery pq = new PhraseQuery();
+					pq.SetSlop(phraseSlop);
+					int position = - 1;
 					for (int i = 0; i < v.Count; i++)
 					{
-						q.Add(new Term(field, ((Lucene.Net.Analysis.Token) v[i]).TermText()));
+						t = (Lucene.Net.Analysis.Token) v[i];
+						if (enablePositionIncrements)
+						{
+							position += t.GetPositionIncrement();
+							pq.Add(new Term(field, t.TermText()), position);
+						}
+						else
+						{
+							pq.Add(new Term(field, t.TermText()));
+						}
 					}
-					return q;
+					return pq;
 				}
 			}
 		}
@@ -562,7 +617,7 @@
 		/// a SpanNearQuery instead of a PhraseQuery.
 		/// 
 		/// </summary>
-		/// <exception cref=""> ParseException throw in overridden method to disallow
+		/// <exception cref="ParseException">throw in overridden method to disallow
 		/// </exception>
 		public virtual Query GetFieldQuery(System.String field, System.String queryText, int slop)
 		{
@@ -581,7 +636,7 @@
 		}
 		
 		
-		/// <exception cref=""> ParseException throw in overridden method to disallow
+		/// <exception cref="ParseException">throw in overridden method to disallow
 		/// </exception>
 		public virtual Query GetRangeQuery(System.String field, System.String part1, System.String part2, bool inclusive)
 		{
@@ -666,7 +721,7 @@
 		/// </param>
 		/// <returns> Resulting {@link Query} object.
 		/// </returns>
-		/// <exception cref=""> ParseException throw in overridden method to disallow
+		/// <exception cref="ParseException">throw in overridden method to disallow
 		/// </exception>
 		public virtual Query GetBooleanQuery(System.Collections.ArrayList clauses)
 		{
@@ -692,6 +747,10 @@
 		/// </exception>
 		public virtual Query GetBooleanQuery(System.Collections.ArrayList clauses, bool disableCoord)
 		{
+			if (clauses.Count == 0)
+			{
+				return null; // all clause words were filtered away by the analyzer.
+			}
 			BooleanQuery query = new BooleanQuery(disableCoord);
 			for (int i = 0; i < clauses.Count; i++)
 			{
@@ -722,7 +781,7 @@
 		/// </param>
 		/// <returns> Resulting {@link Query} built for the term
 		/// </returns>
-		/// <exception cref=""> ParseException throw in overridden method to disallow
+		/// <exception cref="ParseException">throw in overridden method to disallow
 		/// </exception>
 		public virtual Query GetWildcardQuery(System.String field, System.String termStr)
 		{
@@ -765,7 +824,7 @@
 		/// </param>
 		/// <returns> Resulting {@link Query} built for the term
 		/// </returns>
-		/// <exception cref=""> ParseException throw in overridden method to disallow
+		/// <exception cref="ParseException">throw in overridden method to disallow
 		/// </exception>
 		public virtual Query GetPrefixQuery(System.String field, System.String termStr)
 		{
@@ -792,7 +851,7 @@
 		/// </param>
 		/// <returns> Resulting {@link Query} built for the term
 		/// </returns>
-		/// <exception cref=""> ParseException throw in overridden method to disallow
+		/// <exception cref="ParseException">throw in overridden method to disallow
 		/// </exception>
 		public virtual Query GetFuzzyQuery(System.String field, System.String termStr, float minSimilarity)
 		{
@@ -917,8 +976,8 @@
 			for (int i = 0; i < s.Length; i++)
 			{
 				char c = s[i];
-				// NOTE: keep this in sync with _ESCAPED_CHAR below!
-				if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '\"' || c == '{' || c == '}' || c == '~' || c == '*' || c == '?')
+				// These characters are part of the query syntax and must be escaped
+				if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '\"' || c == '{' || c == '}' || c == '~' || c == '*' || c == '?' || c == '|' || c == '&')
 				{
 					sb.Append('\\');
 				}
@@ -985,7 +1044,7 @@
 				if (true)
 					return ret;
 			}
-			throw new System.ApplicationException("Missing return statement in function");
+			//// throw new System.ApplicationException("Missing return statement in function");
 		}
 		
 		public int Modifiers()
@@ -1033,7 +1092,20 @@
 				if (true)
 					return ret;
 			}
-			throw new System.ApplicationException("Missing return statement in function");
+			//// throw new System.ApplicationException("Missing return statement in function");
+		}
+		
+		// This makes sure that there is no garbage after the query string
+		public Query TopLevelQuery(System.String field)
+		{
+			Query q;
+			q = Query(field);
+			Jj_consume_token(0);
+			{
+				if (true)
+					return q;
+			}
+			//// throw new System.ApplicationException("Missing return statement in function");
 		}
 		
 		public Query Query(System.String field)
@@ -1093,7 +1165,7 @@
 						return GetBooleanQuery(clauses);
 				}
 			}
-			throw new System.ApplicationException("Missing return statement in function");
+			//// throw new System.ApplicationException("Missing return statement in function");
 		}
 		
 		public Query Clause(System.String field)
@@ -1102,7 +1174,7 @@
 			Token fieldToken = null, boost = null;
 			if (Jj_2_1(2))
 			{
-				switch ((jj_ntk == - 1)?Jj_ntk():jj_ntk)
+				switch ((jj_ntk == - 1) ? Jj_ntk() : jj_ntk)
 				{
 					
 					case Lucene.Net.QueryParsers.QueryParserConstants.TERM: 
@@ -1184,7 +1256,7 @@
 				if (true)
 					return q;
 			}
-			throw new System.ApplicationException("Missing return statement in function");
+			//// throw new System.ApplicationException("Missing return statement in function");
 		}
 		
 		public Query Term(System.String field)
@@ -1536,7 +1608,7 @@
 				if (true)
 					return q;
 			}
-			throw new System.ApplicationException("Missing return statement in function");
+			//// throw new System.ApplicationException("Missing return statement in function");
 		}
 		
 		private bool Jj_2_1(int xla)
@@ -1556,15 +1628,6 @@
 			}
 		}
 		
-		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()
 		{
 			if (Jj_scan_token(Lucene.Net.QueryParsers.QueryParserConstants.TERM))
@@ -1587,6 +1650,15 @@
 			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;
+		}
+		
 		public QueryParserTokenManager token_source;
 		public Token token, jj_nt;
 		private int jj_ntk;

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=671403&r1=671402&r2=671403&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 Tue Jun 24 19:51:48 2008
@@ -19,12 +19,12 @@
 
 using System;
 
+using Lucene.Net.Documents;
 using Term = Lucene.Net.Index.Term;
+using Parameter = Lucene.Net.Util.Parameter;
 using Lucene.Net.Analysis;
-using Lucene.Net.Documents;
 using Lucene.Net.Search;
 using Searchable = Lucene.Net.Search.Searchable;
-using Parameter = Lucene.Net.Util.Parameter;
 
 namespace Lucene.Net.QueryParsers
 {
@@ -89,7 +89,7 @@
 					return JjStopAtPos(0, 13);
 				
 				case (char) (42): 
-					return JjStartNfaWithStates_3(0, 15, 37);
+					return JjStartNfaWithStates_3(0, 15, 36);
 				
 				case (char) (43): 
 					return JjStopAtPos(0, 10);
@@ -154,7 +154,7 @@
 		{
 			int[] nextStates;
 			int startsAt = 0;
-			jjnewStateCnt = 37;
+			jjnewStateCnt = 36;
 			int i = 1;
 			jjstateSet[0] = startState;
 			int j, kind = 0x7fffffff;
@@ -164,27 +164,21 @@
 					ReInitRounds();
 				if (curChar < 64)
 				{
-					ulong l = ((ulong) 1L) << curChar;
-MatchLoop: 
+					ulong l = (ulong) (1L << (int) curChar);
+
+//// MatchLoop: 
 					do 
 					{
 						switch (jjstateSet[--i])
 						{
 							
-							case 37: 
-								if ((0xfbfffcf8ffffd9ffL & l) != (ulong) 0L)
-								{
-									if (kind > 21)
-										kind = 21;
-									JjCheckNAddTwoStates(33, 34);
-								}
-								if ((0x7bfff8f8ffffd9ffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
-								else if (curChar == 42)
-								{
-									if (kind > 20)
-										kind = 20;
-								}
+							case 36: 
+							case 25: 
+								if ((0xfbfffcf8ffffd9ffL & l) == (ulong) 0L)
+									break;
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 0: 
@@ -192,7 +186,7 @@
 								{
 									if (kind > 21)
 										kind = 21;
-									JjCheckNAddTwoStates(33, 34);
+									JjCheckNAddTwoStates(25, 26);
 								}
 								else if ((0x100002600L & l) != (ulong) 0L)
 								{
@@ -200,19 +194,22 @@
 										kind = 6;
 								}
 								else if (curChar == 34)
-									JjCheckNAddTwoStates(15, 17);
+									JjCheckNAddStates(0, 2);
 								else if (curChar == 33)
 								{
 									if (kind > 9)
 										kind = 9;
 								}
-								if ((0x7bffd4f8ffffd9ffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
 								if ((0x7bffd0f8ffffd9ffL & l) != (ulong) 0L)
 								{
 									if (kind > 18)
 										kind = 18;
-									JjCheckNAddTwoStates(20, 21);
+									JjCheckNAddStates(3, 7);
+								}
+								else if (curChar == 42)
+								{
+									if (kind > 20)
+										kind = 20;
 								}
 								if (curChar == 38)
 									jjstateSet[jjnewStateCnt++] = 4;
@@ -234,18 +231,14 @@
 								break;
 							
 							case 14: 
+							case 16: 
 								if (curChar == 34)
-									JjCheckNAddTwoStates(15, 17);
+									JjCheckNAddStates(0, 2);
 								break;
 							
 							case 15: 
 								if ((0xfffffffbffffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(3, 5);
-								break;
-							
-							case 16: 
-								if (curChar == 34)
-									JjCheckNAddStates(3, 5);
+									JjCheckNAddStates(0, 2);
 								break;
 							
 							case 18: 
@@ -253,93 +246,75 @@
 									kind = 17;
 								break;
 							
-							case 19: 
-								if ((0x7bffd0f8ffffd9ffL & l) == (ulong) 0L)
-									break;
-								if (kind > 18)
-									kind = 18;
-								JjCheckNAddTwoStates(20, 21);
-								break;
-							
 							case 20: 
-								if ((0x7bfff8f8ffffd9ffL & l) == (ulong) 0L)
+								if ((0x3ff000000000000L & l) == (ulong) 0L)
 									break;
-								if (kind > 18)
-									kind = 18;
-								JjCheckNAddTwoStates(20, 21);
+								if (kind > 19)
+									kind = 19;
+								JjAddStates(8, 9);
 								break;
 							
-							case 22: 
-								if ((0x84002f0600000000L & l) == (ulong) 0L)
-									break;
-								if (kind > 18)
-									kind = 18;
-								JjCheckNAddTwoStates(20, 21);
+							case 21: 
+								if (curChar == 46)
+									JjCheckNAdd(22);
 								break;
 							
-							case 24: 
+							case 22: 
 								if ((0x3ff000000000000L & l) == (ulong) 0L)
 									break;
 								if (kind > 19)
 									kind = 19;
-								JjAddStates(6, 7);
+								JjCheckNAdd(22);
 								break;
 							
-							case 25: 
-								if (curChar == 46)
-									JjCheckNAdd(26);
+							case 23: 
+								if (curChar == 42 && kind > 20)
+									kind = 20;
 								break;
 							
-							case 26: 
-								if ((0x3ff000000000000L & l) == (ulong) 0L)
+							case 24: 
+								if ((0xfbffd4f8ffffd9ffL & l) == (ulong) 0L)
 									break;
-								if (kind > 19)
-									kind = 19;
-								JjCheckNAdd(26);
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 27: 
-								if ((0x7bffd4f8ffffd9ffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 28: 
-								if ((0x7bfff8f8ffffd9ffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
+								if ((0x7bffd0f8ffffd9ffL & l) == (ulong) 0L)
+									break;
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddStates(3, 7);
 								break;
 							
 							case 29: 
-								if (curChar == 42 && kind > 20)
-									kind = 20;
+								if ((0x7bfff8f8ffffd9ffL & l) == (ulong) 0L)
+									break;
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddTwoStates(29, 30);
 								break;
 							
 							case 31: 
-								if ((0x84002f0600000000L & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddTwoStates(29, 30);
 								break;
 							
 							case 32: 
-								if ((0xfbffd4f8ffffd9ffL & l) == (ulong) 0L)
-									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
-								break;
-							
-							case 33: 
-								if ((0xfbfffcf8ffffd9ffL & l) == (ulong) 0L)
-									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
+								if ((0x7bfff8f8ffffd9ffL & l) != (ulong) 0L)
+									JjCheckNAddStates(10, 12);
 								break;
 							
-							case 35: 
-								if ((0x84002f0600000000L & l) == (ulong) 0L)
-									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
+							case 34: 
+								JjCheckNAddStates(10, 12);
 								break;
 							
 							default:  break;
@@ -350,52 +325,47 @@
 				}
 				else if (curChar < 128)
 				{
-					ulong l = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
 						{
 							
-							case 37: 
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
+							case 36: 
+								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
 								{
 									if (kind > 21)
 										kind = 21;
-									JjCheckNAddTwoStates(33, 34);
+									JjCheckNAddTwoStates(25, 26);
 								}
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
-								if (curChar == 92)
-									JjCheckNAddTwoStates(31, 31);
-								if (curChar == 92)
-									JjCheckNAddTwoStates(35, 35);
+								else if (curChar == 92)
+									JjCheckNAddTwoStates(27, 27);
 								break;
 							
 							case 0: 
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
+								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 21)
-										kind = 21;
-									JjCheckNAddTwoStates(33, 34);
+									if (kind > 18)
+										kind = 18;
+									JjCheckNAddStates(3, 7);
 								}
+								else if (curChar == 92)
+									JjCheckNAddStates(13, 15);
 								else if (curChar == 126)
 								{
 									if (kind > 19)
 										kind = 19;
-									jjstateSet[jjnewStateCnt++] = 24;
+									jjstateSet[jjnewStateCnt++] = 20;
 								}
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
+								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
 								{
-									if (kind > 18)
-										kind = 18;
-									JjCheckNAddTwoStates(20, 21);
+									if (kind > 21)
+										kind = 21;
+									JjCheckNAddTwoStates(25, 26);
 								}
-								if (curChar == 92)
-									JjCheckNAddStates(8, 10);
-								else if (curChar == 78)
+								if (curChar == 78)
 									jjstateSet[jjnewStateCnt++] = 11;
 								else if (curChar == 124)
 									jjstateSet[jjnewStateCnt++] = 8;
@@ -456,7 +426,7 @@
 								break;
 							
 							case 15: 
-								JjAddStates(3, 5);
+								JjAddStates(0, 2);
 								break;
 							
 							case 17: 
@@ -465,43 +435,54 @@
 								break;
 							
 							case 19: 
-							case 20: 
-								if ((0x97ffffff97ffffffL & l) == (ulong) 0L)
+								if (curChar != 126)
 									break;
-								if (kind > 18)
-									kind = 18;
-								JjCheckNAddTwoStates(20, 21);
+								if (kind > 19)
+									kind = 19;
+								jjstateSet[jjnewStateCnt++] = 20;
 								break;
 							
-							case 21: 
-								if (curChar == 92)
-									JjCheckNAddTwoStates(22, 22);
+							case 24: 
+								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
+									break;
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
-							case 22: 
-								if ((0x6800000078000000L & l) == (ulong) 0L)
+							case 25: 
+								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
 									break;
-								if (kind > 18)
-									kind = 18;
-								JjCheckNAddTwoStates(20, 21);
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
-							case 23: 
-								if (curChar != 126)
-									break;
-								if (kind > 19)
-									kind = 19;
-								jjstateSet[jjnewStateCnt++] = 24;
+							case 26: 
+								if (curChar == 92)
+									JjCheckNAddTwoStates(27, 27);
 								break;
 							
 							case 27: 
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 28: 
-								if ((0x97ffffff97ffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(0, 2);
+								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
+									break;
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddStates(3, 7);
+								break;
+							
+							case 29: 
+								if ((0x97ffffff87ffffffL & l) == (ulong) 0L)
+									break;
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddTwoStates(29, 30);
 								break;
 							
 							case 30: 
@@ -510,42 +491,28 @@
 								break;
 							
 							case 31: 
-								if ((0x6800000078000000L & l) != 0L)
-									JjCheckNAddStates(0, 2);
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddTwoStates(29, 30);
 								break;
 							
 							case 32: 
-								if ((0x97ffffff97ffffffL & l) == (ulong) 0L)
-									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
+								if ((0x97ffffff87ffffffL & l) != (ulong) 0L)
+									JjCheckNAddStates(10, 12);
 								break;
 							
 							case 33: 
-								if ((0x97ffffff97ffffffL & l) == (ulong) 0L)
-									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
+								if (curChar == 92)
+									JjCheckNAddTwoStates(34, 34);
 								break;
 							
 							case 34: 
-								if (curChar == 92)
-									JjCheckNAddTwoStates(35, 35);
+								JjCheckNAddStates(10, 12);
 								break;
 							
 							case 35: 
-								if ((0x6800000078000000L & l) == (ulong) 0L)
-									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
-								break;
-							
-							case 36: 
 								if (curChar == 92)
-									JjCheckNAddStates(8, 10);
+									JjCheckNAddStates(13, 15);
 								break;
 							
 							default:  break;
@@ -560,79 +527,73 @@
 					int i1 = hiByte >> 6;
 					ulong l1 = ((ulong) 1L) << (hiByte & 63);
 					int i2 = (curChar & 0xff) >> 6;
-					ulong l2 = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l2 = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
 						{
 							
-							case 37: 
-								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
-									JjCheckNAddStates(0, 2);
+							case 36: 
+							case 25: 
+							case 27: 
+								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
+									break;
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
+								break;
+							
+							case 0: 
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 								{
 									if (kind > 21)
 										kind = 21;
-									JjCheckNAddTwoStates(33, 34);
+									JjCheckNAddTwoStates(25, 26);
 								}
-								break;
-							
-							case 0: 
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 								{
 									if (kind > 18)
 										kind = 18;
-									JjCheckNAddTwoStates(20, 21);
-								}
-								if (JjCanMove_0(hiByte, i1, i2, l1, l2))
-									JjCheckNAddStates(0, 2);
-								if (JjCanMove_0(hiByte, i1, i2, l1, l2))
-								{
-									if (kind > 21)
-										kind = 21;
-									JjCheckNAddTwoStates(33, 34);
+									JjCheckNAddStates(3, 7);
 								}
 								break;
 							
 							case 15: 
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
-									JjAddStates(3, 5);
+									JjAddStates(0, 2);
 								break;
 							
-							case 19: 
-							case 20: 
+							case 24: 
 								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 									break;
-								if (kind > 18)
-									kind = 18;
-								JjCheckNAddTwoStates(20, 21);
-								break;
-							
-							case 27: 
-								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
-									JjCheckNAddStates(0, 2);
+								if (kind > 21)
+									kind = 21;
+								JjCheckNAddTwoStates(25, 26);
 								break;
 							
 							case 28: 
-								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
-									JjCheckNAddStates(0, 2);
-								break;
-							
-							case 32: 
 								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
 									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddStates(3, 7);
 								break;
 							
-							case 33: 
-								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
+							case 29: 
+							case 31: 
+								if (!JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) 2))
 									break;
-								if (kind > 21)
-									kind = 21;
-								JjCheckNAddTwoStates(33, 34);
+								if (kind > 18)
+									kind = 18;
+								JjCheckNAddTwoStates(29, 30);
+								break;
+							
+							case 32: 
+							case 34: 
+								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
+									JjCheckNAddStates(10, 12);
 								break;
 							
 							default:  break;
@@ -648,7 +609,7 @@
 					kind = 0x7fffffff;
 				}
 				++curPos;
-				if ((i = jjnewStateCnt) == (startsAt = 37 - (jjnewStateCnt = startsAt)))
+				if ((i = jjnewStateCnt) == (startsAt = 36 - (jjnewStateCnt = startsAt)))
 					return curPos;
 				try
 				{
@@ -690,7 +651,7 @@
 			{
 				curChar = input_stream.ReadChar();
 			}
-			catch (System.IO.IOException)
+			catch (System.IO.IOException e)
 			{
 				return pos + 1;
 			}
@@ -718,7 +679,7 @@
 			{
 				curChar = input_stream.ReadChar();
 			}
-			catch (System.IO.IOException)
+			catch (System.IO.IOException e)
 			{
 				JjStopStringLiteralDfa_1(0, (ulong) active0);
 				return 1;
@@ -751,8 +712,9 @@
 					ReInitRounds();
 				if (curChar < 64)
 				{
-					ulong l = ((ulong) 1L) << curChar;
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << curChar;
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -781,12 +743,12 @@
 							
 							case 2: 
 								if ((0xfffffffbffffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(11, 13);
+									JjCheckNAddStates(16, 18);
 								break;
 							
 							case 3: 
 								if (curChar == 34)
-									JjCheckNAddStates(11, 13);
+									JjCheckNAddStates(16, 18);
 								break;
 							
 							case 5: 
@@ -810,8 +772,9 @@
 				}
 				else if (curChar < 128)
 				{
-					ulong l = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << (curChar & 63);
+
+/// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -827,7 +790,7 @@
 								break;
 							
 							case 2: 
-								JjAddStates(11, 13);
+								JjAddStates(16, 18);
 								break;
 							
 							case 4: 
@@ -847,8 +810,9 @@
 					int i1 = hiByte >> 6;
 					ulong l1 = ((ulong) 1L) << (hiByte & 63);
 					int i2 = (curChar & 0xff) >> 6;
-					ulong l2 = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l2 = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -865,7 +829,7 @@
 							
 							case 2: 
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
-									JjAddStates(11, 13);
+									JjAddStates(16, 18);
 								break;
 							
 							default:  break;
@@ -887,7 +851,7 @@
 				{
 					curChar = input_stream.ReadChar();
 				}
-				catch (System.IO.IOException)
+				catch (System.IO.IOException e)
 				{
 					return curPos;
 				}
@@ -911,8 +875,9 @@
 					ReInitRounds();
 				if (curChar < 64)
 				{
-					ulong l = ((ulong) 1L) << curChar;
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << curChar;
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -923,7 +888,7 @@
 									break;
 								if (kind > 24)
 									kind = 24;
-								JjAddStates(14, 15);
+								JjAddStates(19, 20);
 								break;
 							
 							case 1: 
@@ -947,8 +912,9 @@
 				}
 				else if (curChar < 128)
 				{
-					ulong l = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -966,8 +932,9 @@
 					int i1 = hiByte >> 6;
 					ulong l1 = ((ulong) 1L) << (hiByte & 63);
 					int i2 = (curChar & 0xff) >> 6;
-					ulong l2 = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l2 = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -1089,8 +1056,9 @@
 					ReInitRounds();
 				if (curChar < 64)
 				{
-					ulong l = ((ulong) 1L) << curChar;
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << curChar;
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -1119,12 +1087,12 @@
 							
 							case 2: 
 								if ((0xfffffffbffffffffL & l) != (ulong) 0L)
-									JjCheckNAddStates(11, 13);
+									JjCheckNAddStates(16, 18);
 								break;
 							
 							case 3: 
 								if (curChar == 34)
-									JjCheckNAddStates(11, 13);
+									JjCheckNAddStates(16, 18);
 								break;
 							
 							case 5: 
@@ -1148,8 +1116,9 @@
 				}
 				else if (curChar < 128)
 				{
-					ulong l = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -1165,7 +1134,7 @@
 								break;
 							
 							case 2: 
-								JjAddStates(11, 13);
+								JjAddStates(16, 18);
 								break;
 							
 							case 4: 
@@ -1185,8 +1154,9 @@
 					int i1 = hiByte >> 6;
 					ulong l1 = ((ulong) 1L) << (hiByte & 63);
 					int i2 = (curChar & 0xff) >> 6;
-					ulong l2 = ((ulong) 1L) << (curChar & 63);
-MatchLoop1: 
+					ulong l2 = ((ulong) 1L) << (curChar & 63);
+
+//// MatchLoop1: 
 					do 
 					{
 						switch (jjstateSet[--i])
@@ -1203,7 +1173,7 @@
 							
 							case 2: 
 								if (JjCanMove_0(hiByte, i1, i2, (ulong) l1, (ulong) l2))
-									JjAddStates(11, 13);
+									JjAddStates(16, 18);
 								break;
 							
 							default:  break;
@@ -1231,7 +1201,7 @@
 				}
 			}
 		}
-		internal static readonly int[] jjnextStates = new int[]{28, 29, 30, 15, 17, 18, 24, 25, 22, 31, 35, 2, 4, 5, 0, 1};
+		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};
 		private static bool JjCanMove_0(int hiByte, int i1, int i2, ulong l1, ulong l2)
 		{
 			switch (hiByte)
@@ -1253,8 +1223,8 @@
 		internal static readonly ulong[] jjtoToken = new ulong[]{0x1ffffff81L};
 		internal static readonly long[] jjtoSkip = new long[]{0x40L};
 		protected internal CharStream input_stream;
-		private uint[] jjrounds = new uint[37];
-		private int[] jjstateSet = new int[74];
+		private uint[] jjrounds = new uint[36];
+		private int[] jjstateSet = new int[72];
 		protected internal char curChar;
 		public QueryParserTokenManager(CharStream stream)
 		{
@@ -1276,7 +1246,7 @@
 		{
 			int i;
 			jjround = 0x80000001;
-			for (i = 37; i-- > 0; )
+			for (i = 36; i-- > 0; )
 				jjrounds[i] = 0x80000000;
 		}
 		public virtual void  ReInit(CharStream stream, int lexState)
@@ -1294,7 +1264,7 @@
 		
 		protected internal virtual Token JjFillToken()
 		{
-			Token t = Token.newToken(jjmatchedKind);
+			Token t = Token.NewToken(jjmatchedKind);
 			t.kind = jjmatchedKind;
 			System.String im = jjstrLiteralImages[jjmatchedKind];
 			t.image = (im == null) ? input_stream.GetImage() : im;

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=671403&r1=671402&r2=671403&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 Tue Jun 24 19:51:48 2008
@@ -81,7 +81,7 @@
 		/// 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)
 		{
 			switch (ofKind)
 			{

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=671403&r1=671402&r2=671403&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 Tue Jun 24 19:51:48 2008
@@ -113,7 +113,7 @@
 						if ((ch = str[i]) < 0x20 || ch > 0x7e)
 						{
 							System.String s = "0000" + System.Convert.ToString(ch, 16);
-							retval.Append("\\u" + s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
+							retval.Append("\\u").Append(s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
 						}
 						else
 						{
@@ -139,7 +139,7 @@
 		/// </summary>
 		protected internal static System.String LexicalError(bool EOFSeen, int lexState, int errorLine, int errorColumn, System.String errorAfter, char curChar)
 		{
-			return ("Lexical error at line " + errorLine + ", column " + errorColumn + ".  Encountered: " + (EOFSeen?"<EOF> ":("\"" + addEscapes(System.Convert.ToString(curChar)) + "\"") + " (" + (int) curChar + "), ") + "after : \"" + addEscapes(errorAfter) + "\"");
+			return ("Lexical error at line " + errorLine + ", column " + errorColumn + ".  Encountered: " + (EOFSeen ? "<EOF> " : ("\"" + addEscapes(System.Convert.ToString(curChar)) + "\"") + " (" + (int) curChar + "), ") + "after : \"" + addEscapes(errorAfter) + "\"");
 		}
 		
 		/*



Mime
View raw message