]> matita.cs.unibo.it Git - helm.git/commitdiff
1. minus binary operator added
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 29 May 2003 16:26:56 +0000 (16:26 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 29 May 2003 16:26:56 +0000 (16:26 +0000)
2. identifiers can no longer start with a non-letter character

helm/ocaml/tex_cic_textual_parser/texCicTextualLexer.mll
helm/ocaml/tex_cic_textual_parser/texCicTextualParser.mly

index 7f70b8e880989066536a7a4a21453df65c4da77f..320162c752e8b3abb57b62e4e6e05249511e71d0 100644 (file)
@@ -63,8 +63,9 @@
 }
 let dollar = '$'
 let num = ['1'-'9']['0'-'9']* | '0'
-let alfa = ['A'-'Z' 'a'-'z' '_' ''' '-'] | "\\_"
-let ident = alfa (alfa | num)*
+let letter = ['A'-'Z' 'a'-'z']
+let alfa = letter | ['_' ''' '-'] | "\\_"
+let ident = letter (alfa | num)*
 let baseuri = '/'(ident '/')* ident '.'
 let conuri = baseuri "con"
 let varuri = baseuri "var"
@@ -115,6 +116,7 @@ rule token =
   | eof         { EOF }
   (* Arithmetical operators *)
   | '+'         { PLUS }
+  | '-'         { MINUS }
   | '*'         { TIMES }
   | '='         { EQ }
 {}
index 24548592299e52d83fe494d10dc50f5d77780018..e26145e2855ba815dd03c1814750642ce40779aa 100644 (file)
 %token LPAREN RPAREN PROD LAMBDA COLON DOT SET PROP TYPE CAST IMPLICIT NONE
 %token LETIN FIX COFIX SEMICOLON LCURLY RCURLY CASE ARROW LBRACKET RBRACKET EOF
 %token DOLLAR
-%token PLUS TIMES EQ
+%token PLUS MINUS TIMES EQ
 %right ARROW
 %right EQ
-%right PLUS
+%right PLUS MINUS
 %right TIMES
 %start main
 %type <CicTextualParser0.interpretation_domain_item list * (CicTextualParser0.interpretation -> Cic.term)> main
@@ -208,6 +208,18 @@ expr2:
           (mk_expr2 interp)
          ]
    }
+ | expr2 MINUS expr2
+   { let dom1,mk_expr1 = $1 in
+     let dom2,mk_expr2 = $3 in
+      let dom = union dom1 dom2 in
+       dom, function interp ->
+        Cic.Appl
+         [Cic.Const
+           (UriManager.uri_of_string "cic:/Coq/Arith/Minus/minus.con",[]) ;
+          (mk_expr1 interp) ;
+          (mk_expr2 interp)
+         ]
+   }
  | expr2 TIMES expr2
    { let dom1,mk_expr1 = $1 in
      let dom2,mk_expr2 = $3 in