Normalise relation modifiers to lower-case.
[cql-java-moved-to-github.git] / src / org / z3950 / zing / cql / CQLParser.java
index 59cedf8..6329146 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: CQLParser.java,v 1.15 2002-11-06 00:05:58 mike Exp $
+// $Id: CQLParser.java,v 1.19 2002-11-08 16:38:47 mike Exp $
 
 package org.z3950.zing.cql;
 import java.io.IOException;
@@ -12,7 +12,7 @@ import java.io.FileNotFoundException;
 /**
  * Compiles CQL strings into parse trees of CQLNode subtypes.
  *
- * @version    $Id: CQLParser.java,v 1.15 2002-11-06 00:05:58 mike Exp $
+ * @version    $Id: CQLParser.java,v 1.19 2002-11-08 16:38:47 mike Exp $
  * @see                <A href="http://zing.z3950.org/cql/index.html"
  *                     >http://zing.z3950.org/cql/index.html</A>
  */
@@ -46,7 +46,8 @@ public class CQLParser {
 
        lexer.nextToken();
        debug("about to parse_query()");
-       CQLNode root = parse_query("srw.serverChoice", new CQLRelation("="));
+       CQLNode root = parse_query("srw.serverChoice", new CQLRelation("scr"));
+       // ### "scr" above should arguably be "="
        if (lexer.ttype != lexer.TT_EOF)
            throw new CQLParseException("junk after end: " + lexer.render());
 
@@ -129,7 +130,7 @@ public class CQLParser {
                    lexer.ttype != lexer.TT_STEM)
                    throw new CQLParseException("expected relation modifier, "
                                                + "got " + lexer.render());
-               relation.addModifier(lexer.sval);
+               relation.addModifier(lexer.sval.toLowerCase());
                match(lexer.ttype);
            }
 
@@ -328,7 +329,7 @@ public class CQLParser {
            try {
                // Read in the whole of standard input in one go
                int nbytes = System.in.read(bytes);
-           } catch (java.io.IOException ex) {
+           } catch (IOException ex) {
                System.err.println("Can't read query: " + ex.getMessage());
                System.exit(2);
            }
@@ -342,7 +343,7 @@ public class CQLParser {
        } catch (CQLParseException ex) {
            System.err.println("Syntax error: " + ex.getMessage());
            System.exit(3);
-       } catch (java.io.IOException ex) {
+       } catch (IOException ex) {
            System.err.println("Can't compile query: " + ex.getMessage());
            System.exit(4);
        }
@@ -362,9 +363,25 @@ public class CQLParser {
            } else {
                System.out.print(root.toXCQL(0));
            }
-       } catch (java.io.IOException ex) {
+       } catch (IOException ex) {
            System.err.println("Can't render query: " + ex.getMessage());
            System.exit(5);
+       } catch (UnknownQualifierException ex) {
+           System.err.println("Unknown qualifier: " + ex.getMessage());
+           System.exit(6);
+       } catch (UnknownRelationException ex) {
+           System.err.println("Unknown relation: " + ex.getMessage());
+           System.exit(7);
+       } catch (UnknownRelationModifierException ex) {
+           System.err.println("Unknown relation modifier: " +
+                              ex.getMessage());
+           System.exit(8);
+       } catch (UnknownPositionException ex) {
+           System.err.println("Unknown position: " + ex.getMessage());
+           System.exit(9);
+       } catch (PQFTranslationException ex) {
+           // We catch all of this class's subclasses, so --
+           throw new Error("can't get a PQFTranslationException");
        }
     }
 }