Parser Plik .mly zaczyna się kodem, który będzie bezpośrednio przepisany, zawartym między %{ i %}. Potem następuje deklaracja typu tokenów - tokeny proste deklaruje się %token NAZWA, tokeny niosące dodatkowe informacje %token <typ> NAZWA. Potem trzeba zdefiniować regułę startową %start reguła i jej typ %type <typ> reguła. Typy innych reguł Ocaml potrafi zazwyczaj inferować, jednak można je też zdeklarować.
Potem następuje %% i zaczynają się reguły postaci: nazwa: możliwa struktura { wyrażenie dla tej struktury } | inna możliwa struktura { wyrażenie dla innej struktury } | itd { itd }
Przykład parsera dla K:
%{ open Hashtbl;; open Program;; %}
%token <string> ID %token <int> INT %token LPAREN RPAREN %token LBRACE RBRACE %token PLUS MINUS TIMES %token EQEQ GT GE LT LE %token PLUS_EQ MINUS_EQ TIMES_EQ %token IF ELSE WHILE %token SEMI %token EOF %token PRINT %token EQ %token PROC CALL GET
%start program %type <Program.stree list> program
%%