---
name: "ocamlyacc"
section: "1"
platform: "linux"
package: "ocaml"
version: "5.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ocamlyacc"
---

# ocamlyacc(1)

The OCaml parser generator

## NAME

ocamlyacc - The OCaml parser generator

## SYNOPSIS

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

## DESCRIPTION

The [**ocamlyacc**(1)](/ocamlyacc/1.md) command produces a parser from a LALR(1) context-free grammar specification with attached semantic actions, in the style of [**yacc**(1)](/yacc/1.md). 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)](/ocamllex/1.md) 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)](/ocamlyacc/1.md).

## OPTIONS

The [**ocamlyacc**(1)](/ocamlyacc/1.md) command recognizes the following options:

- **-b** *prefix*

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

- **-q**

  This option has no effect.

- **--strict**

  Reject grammars with conflicts.

- **-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**

  Print version string and exit.

- **-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

[**ocamllex**(1)](/ocamllex/1.md).\
 *The OCaml user's manual*, chapter "Lexer and parser generators".
