%{ open Structs;; open Tactic;; %} /* Description des lexèmes définis dans lexer.mll */ %token LPAREN RPAREN RARROW TILDE FALSE %token EOF %token VAR_NAME %token TYPE_NAME %token DOT INTRO /* L'ordre de définition définit la priorité */ %right RARROW %nonassoc TILDE %start main_type %type main_type %start main_tactic %type main_tactic %% main_type: | ty EOF { $1 } ty: | LPAREN ty RPAREN { $2 } | ty RARROW ty { TImpl ($1, $3) } | TYPE_NAME { TSimple $1 } | TILDE ty { TImpl ($2, TFalse) } | FALSE { TFalse } main_tactic: | tactic EOF { $1 } tactic: | INTRO VAR_NAME DOT { Intro $2 }