X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmathql_test%2FmQGTopLexer.mll;fp=helm%2Fmathql_test%2FmQGTopLexer.mll;h=7e69bccf6874f74de08b06dd1444c69668bf32cd;hb=0e74e8e94eada756157addce67e4adeb8dff1feb;hp=0000000000000000000000000000000000000000;hpb=65e3c9976212e04a4678ff9ce9e3c2f436d06d33;p=helm.git diff --git a/helm/mathql_test/mQGTopLexer.mll b/helm/mathql_test/mQGTopLexer.mll new file mode 100644 index 000000000..7e69bccf6 --- /dev/null +++ b/helm/mathql_test/mQGTopLexer.mll @@ -0,0 +1,71 @@ +(* Copyright (C) 2000, HELM Team. + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://cs.unibo.it/helm/. + *) + +(* AUTOR: Ferruccio Guidi + *) + +{ + open MQGTopParser + + let debug = false + + let out s = if debug then prerr_endline s +} + +let SPC = [' ' '\t' '\n']+ +let ALPHA = ['A'-'Z' 'a'-'z' '_'] +let NUM = ['0'-'9'] +let IDEN = ALPHA (NUM | ALPHA)* +let QSTR = [^ '"' '\\']+ + +rule comm_token = parse + | "(*" { comm_token lexbuf; comm_token lexbuf } + | "*)" { () } + | ['*' '('] { comm_token lexbuf } + | [^ '*' '(']* { comm_token lexbuf } +and string_token = parse + | '"' { DQ } + | '\\' _ { STR (String.sub (Lexing.lexeme lexbuf) 1 1) } + | QSTR { STR (Lexing.lexeme lexbuf) } + | eof { EOF } +and spec_token = parse + | "(*" { comm_token lexbuf; spec_token lexbuf } + | SPC { spec_token lexbuf } + | '"' { let str = qstr string_token lexbuf in + out ("STR " ^ str); STR str } + | '{' { out "LC"; LC } + | '}' { out "RC"; RC } + | ',' { out "CM"; CM } + | '$' { out "DL"; DL } + | "mustobj" { out "MOBJ" ; MOBJ } + | "mustsort" { out "MSORT" ; MSORT } + | "mustrel" { out "MREL" ; MREL } + | "onlyobj" { out "OOBJ" ; OOBJ } + | "onlysort" { out "OSORT" ; OSORT } + | "onlyrel" { out "OREL" ; OREL } + | "universe" { out "UNIV" ; UNIV } + | IDEN { let id = Lexing.lexeme lexbuf in + out ("ID " ^ id); ID id } + | eof { EOF }