
From grdetil@scrc.umanitoba.ca Tue Feb 16 12:46:42 1999
Date: Tue, 16 Feb 1999 14:31:32 -0600 (CST)
From: Gilles Detillieux <grdetil@scrc.umanitoba.ca>
To: htdig3-dev@htdig.org
Cc: grdetil@scrc.umanitoba.ca, htdig3-dev@htdig.org
Subject: Re: [htdig3-dev] Re: [htdig] SYNTAXERROR - bug?


According to Geoff Hutchison:
> These would make sense. This is an untest patch, but I assume it works
> -Geoff
> 
> Index: parser.cc
> ===================================================================
> RCS file: /opt/htdig/cvs/htdig3/htsearch/parser.cc,v
> retrieving revision 1.6
> diff -c -3 -p -r1.6 parser.cc
> *** parser.cc   1998/12/06 18:45:10     1.6
> --- parser.cc   1999/02/16 18:20:07
> *************** Parser::factor(int output)
> *** 155,160 ****
> --- 155,163 ----
>         else
>         {
>             valid = 0;
> +           error = 0;
> +           error << " ')' instead of '" << current->word.get();

I think you want "expected ')' instead ..." up there!

> +           error << '\'';
>         }
>       }
>       else if (lookahead == WORD)
> *************** Parser::factor(int output)
> *** 168,173 ****
> --- 171,179 ----
>       else
>       {
>         valid = 0;
> +       error = 0;
> +       error << "expected a word instead of '" << current->word.get();
> +       error << '\'';
>       }
>   }
> 

The other problem is that the and's and or's have been changed to &'s and
|'s, so the error message is a tad misleading.  E.g.:

	expected a word instead of '|'

when I tried tool and or toolbar.  Here's my patch:

--- ./htsearch/parser.cc.errors	Mon Feb 15 20:37:20 1999
+++ ./htsearch/parser.cc	Tue Feb 16 14:17:21 1999
@@ -155,6 +155,9 @@
 	else
 	{
 	    valid = 0;
+	    error = 0;
+	    error << "expected ')' instead of '" << current->word.get();
+	    error << '\'';
 	}
     }
     else if (lookahead == WORD)
@@ -168,6 +171,19 @@
     else
     {
 	valid = 0;
+	error = 0;
+	error << "expected a word instead of '" << current->word.get();
+	error << '\'';
+    }
+
+    if (!valid)
+    {
+	switch (lookahead)
+	{
+	case '&':	error << " or 'AND'";	break;
+	case '|':	error << " or 'OR'";	break;
+	case '!':	error << " or 'NOT'";	break;
+	}
     }
 }
 

There's still another problem -- when I try an expression that doesn't have
enough closing parentheses, instead of a syntax error message, I get an
internal server error, with this error in the error log for Apache:

	access to /home/httpd/cgi-bin/htsearch failed for cliff.scrc.umanitoba.ca, reason: Premature end of script headers

This suggests that htsearch is dying before even putting out a Content-type
header.  Any ideas?

-- 
Gilles R. Detillieux              E-mail: <grdetil@scrc.umanitoba.ca>
Spinal Cord Research Centre       WWW:    http://www.scrc.umanitoba.ca/~grdetil
Dept. Physiology, U. of Manitoba  Phone:  (204)789-3766
Winnipeg, MB  R3E 3J7  (Canada)   Fax:    (204)789-3930
------------------------------------
To unsubscribe from the htdig3-dev mailing list, send a message to
htdig3-dev@htdig.org containing the single word "unsubscribe" in
the SUBJECT of the message.
