Skip to main content

Table 6 The full unambiguous grammar in EBNF notation. This is the full unambiguous grammar in EBNF notation. Note that dangling bases are not represented explicitly by a special terminal symbol, but as a 'base'. Their dangling property is accounted for by the derivation path, e.g. the secondary structure .( (...) ). for sequence 'ACCUAUGGG' will be derived as struct → left_dangle → edanglelr left_dangle → base initstem base left_dangle → base initstem base empty. The two unpaired bases in 'base initstem base' have been derived via ' edanglelr', which accounts for their dangling property. We do not give an explicit representation for dangling bases, as the need to derive them explicitly is due to the energy model and not to handling them as discrete structural elements, i.e. a dangling base is nothing more than an unpaired base next to a stem, but it has a non-positive energy contribution that cannot be neglected.

From: Complete probabilistic analysis of RNA shapes

struct = left_dangle | noleft_dangle

left_dangle = base left_dangle |

   edanglel base noleft_dangle |

   edanglel (noleft_dangle | empty) |

   edanglelr left_dangle |

   empty

noleft_dangle = edangler left_dangle |

   nodangle (noleft_dangle | empty) |

   nodangle base noleft_dangle

edanglel = base initstem

edangler = initstem base

edanglelr = base initstem base

nodangle = initstem

initstem = closed

closed = stack | hairpin | multiloop | leftB | rightB | iloop

multiloop = base base base ml_comps1 base base |

   base base base ml_comps2 base base |

   base base ml_comps3 base base base |

   base base ml_comps2 base base base |

   base base base ml_comps4 base base base |

   base base base ml_comps2 base base base |

   base base base ml_comps1 base base base |

   base base base ml_comps3 base base base |

   base base ml_comps2 base base

ml_comps1 = block_dl no_dl_no_ss_end |

   block_dlr dl_or_ss_left_no_ss_end |

   block_dl base no_dl_no_ss_end

ml_comps2 = nodangle no_dl_no_ss_end |

   edangler dl_or_ss_left_no_ss_end |

   nodangle base no_dl_no_ss_end

ml_comps3 = nodangle no_dl_ss_end |

   nodangle base no_dl_ss_end

ml_comps4 = block_dl no_dl_ss_end |

   block_dlr dl_or_ss_left_ss_end |

   block_dl base no_dl_ss_end

block_dl = region edanglel |

   edanglel

block_dlr = region edanglelr |

   edanglelr

no_dl_no_ss_end = ml_comps2 |

   nodangle

dl_or_ss_left_no_ss_end = ml_comps1 |

   block_dl

no_dl_ss_end = ml_comps3 |

   edangler |

   edangler region

dl_or_ss_left_ss_end = ml_comps4 |

   block_dlr |

   block_dlr region |

stack = base closed base

hairpin = base base region base base

leftB = base base region initstem base base

rightB = base base initstem region base base

iloop = base base region closed region base base

base = ' A ' | ' C ' | ' G ' | ' U '

region = base |

   base region