Sys.Signals module for a Variant type of signals (and a set_signal function that...
[ocaml.git] / ocamldoc / odoc_see_lexer.mll
bloba556679bd2a7b0f28c9b64429c5f727a83d6a7e6
2 (***********************************************************************)
3 (*                             OCamldoc                                *)
4 (*                                                                     *)
5 (*            Maxence Guesdon, projet Cristal, INRIA Rocquencourt      *)
6 (*                                                                     *)
7 (*  Copyright 2001 Institut National de Recherche en Informatique et   *)
8 (*  en Automatique.  All rights reserved.  This file is distributed    *)
9 (*  under the terms of the Q Public License version 1.0.               *)
10 (*                                                                     *)
11 (***********************************************************************)
13 (* $Id$ *)
15 let print_DEBUG2 s = print_string s ; print_newline ()
17 (** the lexer for special comments. *)
19 open Lexing
20 open Odoc_parser
22 let buf = Buffer.create 32
24
26 rule main = parse
27   [' ' '\013' '\009' '\012'] +
28   { 
29     print_DEBUG2 "[' ' '\013' '\009' '\012'] +";
30     main lexbuf 
31   }
33   | [ '\010' ] 
34       { 
35         print_DEBUG2 " [ '\010' ] ";
36         main lexbuf 
37       }
39   | "<" 
40       { 
41         print_DEBUG2 "call url lexbuf" ;
42         url lexbuf 
43       } 
45   | "\"" 
46       { 
47         print_DEBUG2 "call doc lexbuf" ;
48         doc lexbuf
49       } 
52   | '\''
53       {
54         print_DEBUG2 "call file lexbuf" ;
55         file lexbuf
56       } 
58   | eof
59       { 
60         print_DEBUG2 "EOF";
61         EOF 
62       }
64   | _
65       { 
66         Buffer.reset buf ;
67         Buffer.add_string buf (Lexing.lexeme lexbuf); 
68         desc lexbuf
69       } 
71 and url = parse
72   | ([^'>'] | '\n')+">"
73       {
74         let s = Lexing.lexeme lexbuf in
75         print_DEBUG2 ("([^'>'] | '\n')+ \">\" with "^s) ;
76         See_url (String.sub s 0 ((String.length s) -1))
77       }
79       
80 and doc = parse
81   | ([^'"'] | '\n' | "\\'")* "\""
82       {
83         let s = Lexing.lexeme lexbuf in
84         See_doc (String.sub s 0 ((String.length s) -1))
85       }
87 and file = parse
88   | ([^'\''] | '\n' | "\\\"")* "'"
89       {
90         let s = Lexing.lexeme lexbuf in
91         See_file (String.sub s 0 ((String.length s) -1))
92       }
95 and desc = parse
96     eof
97       { Desc (Buffer.contents buf) }
98   | _ 
99       { 
100         Buffer.add_string buf (Lexing.lexeme lexbuf);
101         desc lexbuf
102       }