Skip to content

Commit 52d52fe

Browse files
committed
Update ocamldoc's html backend with infix constructors.
1 parent 1ba59cf commit 52d52fe

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

ocamldoc/odoc_ocamlhtml.mll

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,10 @@ let lowercase = ['a'-'z' '\223'-'\246' '\248'-'\255' '_']
251251
let uppercase = ['A'-'Z' '\192'-'\214' '\216'-'\222']
252252
let identchar =
253253
['A'-'Z' 'a'-'z' '_' '\192'-'\214' '\216'-'\246' '\248'-'\255' '\'' '0'-'9']
254+
let constructorchar =
255+
['$' '%' '&' '*' '+' '-' '.' '/' ':' '<' '=' '>' '@' '^' '|']
254256
let symbolchar =
255-
['!' '$' '%' '&' '*' '+' '-' '.' '/' ':' '<' '=' '>' '?' '@' '^' '|' '~']
257+
constructorchar | ['!' '?' '~']
256258
let decimal_literal = ['0'-'9']+
257259
let hex_literal = '0' ['x' 'X'] ['0'-'9' 'A'-'F' 'a'-'f']+
258260
let oct_literal = '0' ['o' 'O'] ['0'-'7']+
@@ -366,7 +368,6 @@ rule token = parse
366368
| "." { print (Lexing.lexeme lexbuf) ; token lexbuf }
367369
| ".." { print (Lexing.lexeme lexbuf) ; token lexbuf }
368370
| ":" { print (Lexing.lexeme lexbuf) ; token lexbuf }
369-
| "::" { print (Lexing.lexeme lexbuf) ; token lexbuf }
370371
| ":=" { print (Lexing.lexeme lexbuf) ; token lexbuf }
371372
| ":>" { print (Lexing.lexeme lexbuf) ; token lexbuf }
372373
| ";" { print (Lexing.lexeme lexbuf) ; token lexbuf }
@@ -407,6 +408,22 @@ rule token = parse
407408
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
408409
| ['*' '/' '%'] symbolchar *
409410
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
411+
412+
| ':' ['|' '&' '$'] constructorchar *
413+
(* := and :> are invalid operators since COLONEQUAL and COLONGREATER already exist.
414+
:< is invalid because [ x:<foo:bar> ] is valid. *)
415+
| ':' ['=' '>' '<'] constructorchar +
416+
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
417+
| ':' ['@' '^'] constructorchar *
418+
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
419+
| "::" constructorchar *
420+
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
421+
| ':' ['+' '-'] constructorchar *
422+
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
423+
| ':' "**" constructorchar *
424+
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
425+
| ':' ['*' '/' '%'] constructorchar *
426+
{ print (Lexing.lexeme lexbuf) ; token lexbuf }
410427
| eof { () }
411428
| _
412429
{ raise (Error(Illegal_character ((Lexing.lexeme lexbuf).[0]),

0 commit comments

Comments
 (0)