summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2012-09-14 08:56:09 +0000
committeraarne <aarne@chalmers.se>2012-09-14 08:56:09 +0000
commitab173e4adc46173c34ba9f52871e777812530d97 (patch)
tree4cb557a991174eef565d5aa33b0799e3dc411e5b /src
parentdecefce6bc1c6a04c9ed45075453e7633ead97f2 (diff)
negative patterns in gfmorpho
Diffstat (limited to 'src')
-rw-r--r--src/www/gfmorpho/GFMorpho.hs12
-rw-r--r--src/www/gfmorpho/gfmorpho.cgi4
-rw-r--r--src/www/gfmorpho/gfmorpho.html26
3 files changed, 29 insertions, 13 deletions
diff --git a/src/www/gfmorpho/GFMorpho.hs b/src/www/gfmorpho/GFMorpho.hs
index e01d1da56..0b7edb893 100644
--- a/src/www/gfmorpho/GFMorpho.hs
+++ b/src/www/gfmorpho/GFMorpho.hs
@@ -72,13 +72,17 @@ cleanTablePlain = map clean where
clean w = case w of
"=>" -> "\t"
"s" -> ""
- "." -> ""
+ "." -> ""
_ -> cleanw w
cleanw = filter (flip notElem "()")
-grep oo wss = filter (\ws -> all (flip matchIn ws) (map tail oo)) wss
+grep oo wss = filter (\ws -> all (flip matchIn ws) oo) wss
-matchIn p ws = any (match p) ws where
+matchIn p ws = quant (matchPol pol patt) ws where
+ quant = if pol then any else all
+ (pol,patt) = (head p == '-', tail p)
+ matchPol True p w = match p w
+ matchPol False p w = not (match p w)
match p w = case (p,w) of
('*':ps,_ ) -> any (match ps) [drop i w | i <- [0..length w]] ---
(c:ps, d:ws) -> c == d && match ps ws
@@ -87,7 +91,7 @@ matchIn p ws = any (match p) ws where
tmpFile = "_gfmorpho.tmp"
tmpCommand = "_gfcommand.tmp"
-isOption = (=='-') . head
+isOption = (flip elem "-~") . head
tag t s = "<" ++ t ++ ">" ++ s ++ "</" ++ t ++ ">"
diff --git a/src/www/gfmorpho/gfmorpho.cgi b/src/www/gfmorpho/gfmorpho.cgi
index c08a9450c..6c47da9a5 100644
--- a/src/www/gfmorpho/gfmorpho.cgi
+++ b/src/www/gfmorpho/gfmorpho.cgi
@@ -3,5 +3,5 @@
echo "Content-type: text/html";
echo ""
export LANG=en_US.UTF-8
-runghc GFMorpho "$QUERY_STRING"
-
+export GF_LIB_PATH=/home/aarne/GF/lib/
+/usr/local/bin/runghc GFMorpho "$QUERY_STRING"
diff --git a/src/www/gfmorpho/gfmorpho.html b/src/www/gfmorpho/gfmorpho.html
index 3a58d4442..46ab12f5f 100644
--- a/src/www/gfmorpho/gfmorpho.html
+++ b/src/www/gfmorpho/gfmorpho.html
@@ -10,7 +10,7 @@
Give language, part of speech, and one or more word forms, to obtain
the inflection table.
<p>
-<form method=get action="gfmorpho.cgi">
+<form method=get action="cgi-bin/gfmorpho.cgi">
<input name=args>
<INPUT TYPE=SUBMIT VALUE="Submit">
</form>
@@ -25,7 +25,7 @@ Examples:
Lat A vetus veteris
</pre>
Thus notice that strings are given without quotes, but features
-are prefixed with an underscore <tt>_</tt> (a temporary hack).
+are prefixed with an underscore <tt>_</tt>.
<h2>Languages and part of speech tags</h2>
@@ -50,24 +50,36 @@ inflection table from the forms given. For a vast majority of words in
all languages, it is enough to give just one form. But sometimes more
forms are needed to get the inflection table right.
+<p>
+
+This is a front end to the Paradigms modules in the GF Resource Grammar.
+See <a href=http://grammaticalframework.org/lib/doc/synopsis.html>RGL
+Synopsis</a> for more information on available languages and paradigms.
+
+
<h2>Filtering with patterns</h2>
-You may not want to see the whole table. Then you can filter it with patterns, each of which works like
+You may not want to see the whole table.
+Then you can filter it with patterns, each of which works like
"grep", using <tt>*</tt> to match any substring, either in the
features or in the forms:
<pre>
Eng N baby -Gen
Eng V die -dy*
</pre>
-This is a front end to the Paradigms modules in the GF Resource Grammar.
-See <a href=http://grammaticalframework.org/lib/doc/synopsis.html>RGL
-Synopsis</a> for available languages and paradigms.
+If several pattern are given, they are applied in conjunction.
+Patterns prefixed with a tilde <tt>~</tt> rather than a hyphen
+<tt>-</tt> are checked for <i>not</i> matching. Thus the search
+<pre>
+ Eng N baby -Gen ~Pl
+</pre>
+selects the lines that contain <tt>Gen</tt> but not <tt>Pl</tt>.
<h2>Using custom paradigms</h2>
-(Another temporary hack, for GF experts:) If you want to use other paradigms than the smart
+(For GF experts.) If you want to use other paradigms than the smart
<tt>mk</tt> paradigms, you can prefix your input with <tt>!</tt> and
use the normal expression syntax of GF. For example:
<pre>