%{ open Structs;; %} /* Description des lexèmes définis dans lexer.mll */ %token LPAREN RPAREN RARROW %token VAR_NAME %token TYPE_NAME %token ENDL EOF /* L'ordre de définition définit la priorité */ %left RARROW %start main_type %type main_type /* Définition des règles de grammaire */ %% main_type: | ty EOF { $1 } ty: | LPAREN ty RPAREN { $2 } | ty RARROW ty { TImpl ($1, $3) } | TYPE_NAME { TSimple $1 }