%token String %token Token %token Package %token Lparen %token Rparen %token Colon %token Equals %token Eof %start entries %type < (string * (string * string) list) list > entries %% entries: Eof {[]} | entry entries {$1 :: $2} entry: Package Lparen Token Rparen Colon pairs {$3, $6} pairs: {[]} | Token Equals String pairs {($1, $3) :: $4} | Token Equals Token pairs {($1, $3) :: $4}