{- CPG island grammar example, adapted from 'Biological Sequence Analysis' (Durbin et al) Let us start by giving the grammar for CPG islands. Also: Pretty comments ;-) -} {- Grammar: CPG -- the name of the grammar N: P -- islands 'Plus' N: M -- continents 'Minus' N: S -- start non-terminal T: n -- read a single nucleotide S: S -- symbol to start with S -> start <<< P -- we could both in island, S -> start <<< M -- or not island P -> nil <<< e -- no input left P -> isl <<< P n -- stay on the island P -> toisl <<< M n -- to island M -> nil <<< e -- no input left here M -> cntnt <<< M n -- stay on the continent M -> frmisl <<< P n -- from island // -- Derive outside grammar, named GPC, from known source grammar. -- Outside: GPC -- Source: CPG -- // -- Emit both the inside and the outside grammar. Emit: CPG -- Emit: GPC -} Grammar: Two {i,j} N: A{k = 3,l = 3} N: B S: A{k = 0} A{k} -> ff <<< A{l} A{k} -> ff <<< B A{k} -> ff <<< A{k + 0} //