cfpq_data.grammars.generators.nested_parentheses_grammar#

nested_parentheses_grammar(types: List[Tuple[str, str]], *, eps: bool = True, start_symbol: Variable = Variable(S)) CFG[source]#

Returns a Nested Parentheses grammar that generates a language of the strings with nested parentheses of given types.

Parameters:
  • types (List[Tuple[str, str]]) -- List of pairs \((op_i, cp_i)\) with opening and closing parentheses for each type.

  • eps (bool) -- Whether the empty string belongs to the language generated by the grammar.

  • start_symbol (Variable) -- Start symbol of the grammar.

Examples

>>> from cfpq_data import *
>>> cfg = nested_parentheses_grammar([("a", "b"), ("c", "d")])
>>> cfg_to_text(cfg)
'S -> \nS -> a S b\nS -> c S d'
Returns:

cfg -- A Nested Parentheses context-free grammar.

Return type:

CFG