class documentation

A feature-based grammar. This is equivalent to a CFG whose nonterminals are all FeatStructNonterminal.

A grammar consists of a start state and a set of productions. The set of terminals and nonterminals is implicitly specified by the productions.

Class Method fromstring Return a feature structure based grammar.
Method __init__ Create a new feature-based grammar, from the given start state and set of Productions.
Method leftcorner_parents Return the set of all categories for which the given category is a left corner.
Method leftcorners Return the set of all words that the given category can start with. Also called the "first set" in compiler construction.
Method productions Return the grammar productions, filtered by the left-hand side or the first item in the right-hand side.
Method _calculate_indexes Undocumented
Method _get_type_if_possible Helper function which returns the TYPE feature of the item, if it exists, otherwise it returns the item itself
Instance Variable _empty_index Undocumented
Instance Variable _empty_productions Undocumented
Instance Variable _lexical_index Undocumented
Instance Variable _lhs_index Undocumented
Instance Variable _rhs_index Undocumented

Inherited from CFG:

Class Method binarize Convert all non-binary rules into binary by introducing new tokens. Example:: Original:
Class Method eliminate_start Eliminate start rule in case it appears on RHS Example: S -> S0 S1 and S0 -> S1 S Then another rule S0_Sigma -> S is added
Class Method remove_unitary_rules Remove nonlexical unitary rules and convert them to lexical
Method __repr__ Undocumented
Method __str__ Undocumented
Method check_coverage Check whether the grammar rules cover the given list of tokens. If not, then raise an exception.
Method chomsky_normal_form Returns a new Grammer that is in chomsky normal :param: new_token_padding
Method is_binarised Return True if all productions are at most binary. Note that there can still be empty and unary productions.
Method is_chomsky_normal_form Return True if the grammar is of Chomsky Normal Form, i.e. all productions are of the form A -> B C, or A -> "s".
Method is_flexible_chomsky_normal_form Return True if all productions are of the forms A -> B C, A -> B, or A -> "s".
Method is_leftcorner True if left is a leftcorner of cat, where left can be a terminal or a nonterminal.
Method is_lexical Return True if all productions are lexicalised.
Method is_nonempty Return True if there are no empty productions.
Method is_nonlexical Return True if all lexical rules are "preterminals", that is, unary rules which can be separated in a preprocessing step.
Method max_len Return the right-hand side length of the longest grammar production.
Method min_len Return the right-hand side length of the shortest grammar production.
Method start Return the start symbol of the grammar
Method _calculate_grammar_forms Pre-calculate of which form(s) the grammar is.
Method _calculate_leftcorners Undocumented
Instance Variable _all_unary_are_lexical Undocumented
Instance Variable _categories Undocumented
Instance Variable _immediate_leftcorner_categories Undocumented
Instance Variable _immediate_leftcorner_words Undocumented
Instance Variable _is_lexical Undocumented
Instance Variable _is_nonlexical Undocumented
Instance Variable _leftcorner_parents Undocumented
Instance Variable _leftcorner_words Undocumented
Instance Variable _leftcorners Undocumented
Instance Variable _max_len Undocumented
Instance Variable _min_len Undocumented
Instance Variable _productions Undocumented
Instance Variable _start Undocumented
@classmethod
def fromstring(cls, input, features=None, logic_parser=None, fstruct_reader=None, encoding=None): (source)

Return a feature structure based grammar.

as a list of strings. :param features: a tuple of features (default: SLASH, TYPE) :param logic_parser: a parser for lambda-expressions, by default, LogicParser() :param fstruct_reader: a feature structure parser (only if features and logic_parser is None)

Parameters
inputa grammar, either in the form of a string or else
featuresUndocumented
logic_parserUndocumented
fstruct_readerUndocumented
encodingUndocumented
def __init__(self, start, productions): (source)

Create a new feature-based grammar, from the given start state and set of Productions.

Parameters
start:FeatStructNonterminalThe start symbol
productions:list(Production)The list of productions that defines the grammar
def leftcorner_parents(self, cat): (source)

Return the set of all categories for which the given category is a left corner.

def leftcorners(self, cat): (source)

Return the set of all words that the given category can start with. Also called the "first set" in compiler construction.

def productions(self, lhs=None, rhs=None, empty=False): (source)

Return the grammar productions, filtered by the left-hand side or the first item in the right-hand side.

Parameters
lhsOnly return productions with the given left-hand side.
rhsOnly return productions with the given first item in the right-hand side.
emptyOnly return productions with an empty right-hand side.
Returns
list(Production)Undocumented
def _calculate_indexes(self): (source)

Undocumented

def _get_type_if_possible(self, item): (source)

Helper function which returns the TYPE feature of the item, if it exists, otherwise it returns the item itself

_empty_index: dict = (source)

Undocumented

_empty_productions: list = (source)

Undocumented

_lexical_index: dict = (source)

Undocumented

_lhs_index: dict = (source)

Undocumented

_rhs_index: dict = (source)

Undocumented