syntaxocamlcamlp4

OCaml guards syntax after a value


I can't quite understand the syntax used here:

let rec lex = parser
  (* Skip any whitespace. *)
  | [< ' (' ' | '\n' | '\r' | '\t'); stream >] -> lex stream

Firstly, I don't understand what it means to use a guard (vertical line) followed by parser. And secondly, I can't seem to find the relevant syntax for the condition surrounded by [< and >]

Got the code from here. Thanks in advance!


Solution

  • As @glennsl says, this page uses the campl4 preprocessor, which is considered obsolete by many in the OCaml community.

    Here is a forum message from August 2019 that describes how to move from camlp4 to the more recent ppx:

    The end of campl4

    Unfortunately that doesn't really help you learn what that LLVM page is trying to teach you, which has little to do with OCaml it seems.

    This is one reason I find the use of syntax extensions to be problematic. They don't have the staying power of the base language.

    (On the other hand, OCaml really is a fantastic language for writing compilers and other language tools.)