OCAMLYACC(1) General Commands Manual OCAMLYACC(1)

# [NAME](#NAME)

ocamlyacc - The OCaml parser generator

# [SYNOPSIS](#SYNOPSIS)

**ocamlyacc** \[ **-bprefix** ] \[ **-q** ] \[ **-v** ] \[ **-version** ] \[ **-vnum** ] *filename.mly*

# [DESCRIPTION](#DESCRIPTION)

The [**ocamlyacc**(1)](/man/enterprise-packages/ocaml-4/ocamlyacc.1) command produces a parser from a [LALR(1)](/man/enterprise-packages/ocaml-4/LALR.1) context-free grammar specification with attached semantic actions, in the style of [**yacc**(1)](/man/enterprise-packages/ocaml-4/yacc.1). Assuming the input file is *grammar*.mly, running **ocamlyacc** produces OCaml 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. Parsing functions take as arguments a lexical analyzer (a function from lexer buffers to tokens) and a lexer buffer, and return the semantic attribute of the corresponding entry point. Lexical analyzer functions are usually generated from a lexer specification by the [**ocamllex**(1)](/man/enterprise-packages/ocaml-4/ocamllex.1) 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 [**ocamlyacc**(1)](/man/enterprise-packages/ocaml-4/ocamlyacc.1).

# [OPTIONS](#OPTIONS)

The [**ocamlyacc**(1)](/man/enterprise-packages/ocaml-4/ocamlyacc.1) command recognizes the following options:

[**-bprefix**](#b)

Name the output files *prefix*.ml, *prefix*.mli, *prefix*.output, instead of the default naming convention.

[**-q**](#q)

This option has no effect.

[**--strict**](#strict)

Reject grammars with conflicts.

[**-v**](#v)

Generate a description of the parsing tables and a report on conflicts resulting from ambiguities in the grammar. The description is put in file *grammar*.output.

[**-version**](#version)

Print version string and exit.

[**-vnum**](#vnum)

Print short version number and exit.

**-**

Read the grammar specification from standard input. The default output file names are stdin.ml and stdin.mli.

**-- file**

Process *file* as the grammar specification, even if its name starts with a dash (-) character. This option must be the last on the command line.

# [SEE ALSO](#SEE_ALSO)

[**ocamllex**(1)](/man/enterprise-packages/ocaml-4/ocamllex.1).  
*The OCaml user's manual*, chapter "Lexer and parser generators".

---

Document: ocamlyacc-4(1) from ocaml-4 4.14.4-r3 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
