The camlyacc command produces a parser from a context-free grammar specification with attached semantic actions, in the style of yacc . Assuming the input file is grammar .mly , executing camlyacc options grammar .mly produces Caml Light code for a parser in the file grammar .ml , and its interface in file grammar .mli . The generated module defines one parsing function per entry point in the grammar. These functions have the same names as the entry points. Lexical analyzer functions are usually generated from a lexer specification by the camllex program.
Lexer buffers are an abstract data type implemented in the standard library module lexing .
Tokens are values from the concrete type token , defined in the interface file grammar .mli produced by camlyacc . The header and the trailer sections are Caml Light code that is copied as is into file grammar .ml . Both sections are optional. The trailer goes at the end of the output file. Declarations Declarations are given one per line.