src/Tools/WWW_Find/find_theorems.ML
changeset 36960 01594f816e3a
parent 36959 f5417836dbea
child 37216 3165bc303f66
equal deleted inserted replaced
36959:f5417836dbea 36960:01594f816e3a
   156       ]
   156       ]
   157   end;
   157   end;
   158 
   158 
   159 end;
   159 end;
   160 
   160 
   161 structure P = OuterParse
       
   162       and K = OuterKeyword
       
   163       and FT = Find_Theorems;
       
   164 
       
   165 val criterion =
   161 val criterion =
   166   P.reserved "name" |-- P.!!! (P.$$$ ":" |-- P.xname) >> Find_Theorems.Name ||
   162   Parse.reserved "name" |-- Parse.!!! (Parse.$$$ ":" |-- Parse.xname) >> Find_Theorems.Name ||
   167   P.reserved "intro" >> K Find_Theorems.Intro ||
   163   Parse.reserved "intro" >> K Find_Theorems.Intro ||
   168   P.reserved "elim" >> K Find_Theorems.Elim ||
   164   Parse.reserved "elim" >> K Find_Theorems.Elim ||
   169   P.reserved "dest" >> K Find_Theorems.Dest ||
   165   Parse.reserved "dest" >> K Find_Theorems.Dest ||
   170   P.reserved "solves" >> K Find_Theorems.Solves ||
   166   Parse.reserved "solves" >> K Find_Theorems.Solves ||
   171   P.reserved "simp" |-- P.!!! (P.$$$ ":" |-- P.term) >> Find_Theorems.Simp ||
   167   Parse.reserved "simp" |-- Parse.!!! (Parse.$$$ ":" |-- Parse.term) >> Find_Theorems.Simp ||
   172   P.term >> Find_Theorems.Pattern;
   168   Parse.term >> Find_Theorems.Pattern;
   173 
   169 
   174 val parse_query =
   170 val parse_query =
   175   Scan.repeat (((Scan.option P.minus >> is_none) -- criterion));
   171   Scan.repeat (((Scan.option Parse.minus >> is_none) -- criterion));
   176 
   172 
   177 fun app_index f xs = fold_index (fn x => K (f x)) xs ();
   173 fun app_index f xs = fold_index (fn x => K (f x)) xs ();
   178 
   174 
   179 fun find_theorems (req as ScgiReq.Req {request_method, query_string, ...},
   175 fun find_theorems (req as ScgiReq.Req {request_method, query_string, ...},
   180                    content, send) =
   176                    content, send) =
   192 
   188 
   193     val query = the_default "" (args "query");
   189     val query = the_default "" (args "query");
   194     fun get_query () =
   190     fun get_query () =
   195       query
   191       query
   196       |> (fn s => s ^ ";")
   192       |> (fn s => s ^ ";")
   197       |> OuterSyntax.scan Position.start
   193       |> Outer_Syntax.scan Position.start
   198       |> filter Token.is_proper
   194       |> filter Token.is_proper
   199       |> Scan.error parse_query
   195       |> Scan.error parse_query
   200       |> fst;
   196       |> fst;
   201 
   197 
   202     val limit =
   198     val limit =