generators.BSTGrammar: extended translation
  (
    { S, L, R, WAIT },
    { hex:6, up:4, up-left:2, up-right:2, combine:2, mirY:1,
      tile1:0, tile2:0, empty:0 },
    { a, b },
    2,
    {
      {
        {
          S -> up[combine[tile1,tile1], L<a a>, WAIT<a b>, R<a a>],
          L -> up-left[combine[tile1,tile1], R<a a>],
          R -> up-right[combine[tile1,tile1], L<a a>],
          WAIT -> S<a a>
        },
        {
          S -> up[combine[tile2,tile2], L<a a>, WAIT<a b>, R<a a>],
          L -> up-left[combine[tile2,tile2], R<a a>],
          R -> up-right[combine[tile2,tile2], L<a a>],
          WAIT -> S<a a>
        }
      },
      {
        {
          S -> combine[empty,tile1],
          L -> combine[empty,mirY[tile1]],
          R -> combine[empty,mirY[tile1]],
          WAIT -> empty
        }
      } weight 0
    },
    hex[S<a a>,S<a a>,S<a a>,S<a a>,S<a a>,S<a a>]
  )
