  In the following paper, we present a simple method for sampling trees with or
without replacement from BCFLs. A BCFL is a context-free language (CFL)
corresponding to an incomplete string with holes, which can be completed by
valid terminals. To solve this problem, we introduce an algebraic datatype that
compactly represents candidate parse forests for porous strings. Once
constructed, sampling trees is a straightforward matter of sampling integers
uniformly without replacement, then lazily decoding them into trees.
