コード例 #1
0
ファイル: grammar.py プロジェクト: swizzard/parsimonious
    def __init__(self, rules='', **more_rules):
        """Construct a grammar.

        :arg rules: A string of production rules, one per line.
        :arg default_rule: The name of the rule invoked when you call
            :meth:`parse()` or :meth:`match()` on the grammar. Defaults to the
            first rule. Falls back to None if there are no string-based rules
            in this grammar.
        :arg more_rules: Additional kwargs whose names are rule names and
            values are Expressions or custom-coded callables which accomplish
            things the built-in rule syntax cannot. These take precedence over
            ``rules`` in case of naming conflicts.

        """
        decorated_custom_rules = dict(
            (k, expression(v, k, self) if isfunction(v) or ismethod(v) else v)
            for k, v in iteritems(more_rules))

        self._expressions, first = self._expressions_from_rules(
            rules, decorated_custom_rules)
        self.default_rule = first  # may be None
コード例 #2
0
    def __init__(self, rules='', **more_rules):
        """Construct a grammar.

        :arg rules: A string of production rules, one per line.
        :arg default_rule: The name of the rule invoked when you call
            :meth:`parse()` or :meth:`match()` on the grammar. Defaults to the
            first rule. Falls back to None if there are no string-based rules
            in this grammar.
        :arg more_rules: Additional kwargs whose names are rule names and
            values are Expressions or custom-coded callables which accomplish
            things the built-in rule syntax cannot. These take precedence over
            ``rules`` in case of naming conflicts.

        """
        decorated_custom_rules = dict(
            (k, expression(v, k, self) if isfunction(v) or
                                          ismethod(v) else
                v) for k, v in iteritems(more_rules))

        self._expressions, first = self._expressions_from_rules(rules, decorated_custom_rules)
        self.default_rule = first  # may be None
コード例 #3
0
ファイル: grammar.py プロジェクト: eevee/parsimonious
    def __init__(self, rules='', default_rule=None, **custom_rules):
        """Construct a grammar.

        :arg rules: A string of production rules, one per line.
        :arg default_rule: The name of the rule invoked when you call
            :meth:`parse()` or :meth:`match()` on the grammar. Defaults to the
            first rule. Falls back to None if there are no string-based rules
            in this grammar.
        :arg custom_rules: Custom-coded rules: Expressions or plain callables
            to accomplish things the built-in rule syntax cannot. These take
            precedence over ``rules`` in case of naming conflicts.

        """
        decorated_custom_rules = dict(
            (k, expression(v, k, self) if isfunction(v) or
                                          ismethod(v) else
                v) for k, v in custom_rules.iteritems())

        exprs, first = self._expressions_from_rules(rules, decorated_custom_rules)

        self.update(exprs)
        self.default_rule = exprs[default_rule] if default_rule else first