]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/pxp/pxp/m2parsergen/lexer.mll
Initial revision
[helm.git] / helm / DEVEL / pxp / pxp / m2parsergen / lexer.mll
1 (* $Id$
2  * ----------------------------------------------------------------------
3  *
4  *)
5
6 {
7   open Parser
8 }
9
10 rule scan_file = parse
11     "/*" [^ '*']* ('*'+ [^ '/' '*'] [^ '*']* )* '*'* "*/"
12       { Space }
13   | "%token"
14       { Token }
15   | "<" [' ' '\t' '\r' '\n']* ">"
16       { Type 
17       }
18   | [ 'a'-'z' ] [ 'a'-'z' 'A'-'Z' '0'-'9' '_' ]*
19       { let s = Lexing.lexeme lexbuf in
20         Lname s
21       }
22   | [ 'A'-'Z' ] [ 'a'-'z' 'A'-'Z' '0'-'9' '_' ]*
23       { let s = Lexing.lexeme lexbuf in
24         Uname s
25       }
26   | "%%"
27       { Separator }
28   | "("
29       { Lparen }
30   | ","
31       { Comma }
32   | ")"
33       { Rparen }
34   | "[" 
35       { Lbracket }
36   | "]" 
37       { Rbracket }
38   | ":"
39       { Colon }
40   | "{{" [^ '}']* ( '}' [^ '}']+ )* "}}"
41       { let s = Lexing.lexeme lexbuf in
42         Code (String.sub s 2 (String.length s - 4), 0, 0)
43       }
44   | "?"
45       { Error }
46   | "|"
47       { Alt }
48   | "+"
49       { Loop_plus }
50   | "*"
51       { Loop_star }
52   | [' ' '\t' '\r' '\n']+
53       { Space }
54   | "$"
55       { Dollar }
56   | eof
57       { Eof }
58
59 and scan_header = parse
60     "%%"
61       { Separator }
62   | "%"
63       { Code("%", 0, 0) }
64   | [^ '%']*
65       { Code(Lexing.lexeme lexbuf, 0, 0) }
66   | eof
67       { Eof }
68
69 and scan_rest = parse
70     _*
71       { Code(Lexing.lexeme lexbuf, 0, 0) }
72   | eof 
73       { Eof }
74
75 (* ======================================================================
76  * History:
77  * 
78  * $Log$
79  * Revision 1.1  2000/11/17 09:57:32  lpadovan
80  * Initial revision
81  *
82  * Revision 1.3  2000/05/09 00:03:22  gerd
83  *      Added [ ml_name ] symbols, where ml_name is an arbitrary
84  * OCaml identifier.
85  *
86  * Revision 1.2  2000/05/06 21:51:24  gerd
87  *      New symbol Dollar.
88  *
89  * Revision 1.1  2000/05/06 17:36:17  gerd
90  *      Initial revision.
91  *
92  * 
93  *)