X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_textual_parser%2FcicTextualLexer.mll;h=1be084795a11505eb80764da93da88e1ad79d5b6;hb=f41a5585a648d57e4d8a24d664b0a5ce5d591148;hp=d35a466952206dfc9f6374a25111f5f1b1a42836;hpb=0195d58340f7dbc852d380a8fee897e1c1f7da03;p=helm.git diff --git a/helm/ocaml/cic_textual_parser/cicTextualLexer.mll b/helm/ocaml/cic_textual_parser/cicTextualLexer.mll index d35a46695..1be084795 100644 --- a/helm/ocaml/cic_textual_parser/cicTextualLexer.mll +++ b/helm/ocaml/cic_textual_parser/cicTextualLexer.mll @@ -1,3 +1,28 @@ +(* 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/. + *) + { open CicTextualParser;; module L = Lexing;; @@ -24,7 +49,8 @@ ;; } let num = ['1'-'9']['0'-'9']* | '0' -let ident = ['A'-'Z' 'a'-'z' '_' '-']* +let alfa = ['A'-'Z' 'a'-'z' '_' ''' '-'] +let ident = alfa (alfa | num)* let baseuri = '/'(ident '/')* ident '.' let conuri = baseuri ("con" | "var") let indtyuri = baseuri "ind#1/" num @@ -45,12 +71,17 @@ rule token = | indtyuri { INDTYURI (indtyuri_of_uri ("cic:" ^ L.lexeme lexbuf)) } | indconuri { INDCONURI (indconuri_of_uri("cic:" ^ L.lexeme lexbuf)) } | num { NUM (int_of_string (L.lexeme lexbuf)) } - | '?' num { META (int_of_string (L.lexeme lexbuf)) } + | '?' num { let lexeme = L.lexeme lexbuf in + META + (int_of_string + (String.sub lexeme 1 (String.length lexeme - 1))) } | ":>" { CAST } | ":=" { LETIN } | '?' { IMPLICIT } | '(' { LPAREN } | ')' { RPAREN } + | '[' { LBRACKET } + | ']' { RBRACKET } | '{' { LCURLY } | '}' { RCURLY } | ';' { SEMICOLON } @@ -58,5 +89,7 @@ rule token = | '!' { PROD } | ':' { COLON } | '.' { DOT } + | "->" { ARROW } + | "_" { NONE } | eof { EOF } {}