当前位置: 首页>>代码示例>>Python>>正文


Python grammar.OMeta类代码示例

本文整理汇总了Python中pymeta.grammar.OMeta的典型用法代码示例。如果您正苦于以下问题:Python OMeta类的具体用法?Python OMeta怎么用?Python OMeta使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了OMeta类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

 def __init__(self, theme):
     self._handlebars = OMeta.makeGrammar(handlebars_grammar, {}, 'handlebars')
     self._builder = CodeBuilder()
     self._compiler = OMeta.makeGrammar(compile_grammar, {'builder': self._builder})
     self._helpers = {}
     self.template_counter = 1
     _ghostpy_['theme'] = theme
开发者ID:ticklemepierce,项目名称:ghostpy,代码行数:7,代码来源:_compiler.py

示例2: __init__

 def __init__(self, theme, domain='', lookup_dir='', lookup_url=''):
     self._handlebars = OMeta.makeGrammar(handlebars_grammar, {}, 'handlebars')
     self._builder = CodeBuilder()
     self._compiler = OMeta.makeGrammar(compile_grammar, {'builder': self._builder})
     self._helpers = {}
     self.template_counter = 1
     _ghostpy_['base'] = domain
     _ghostpy_['lookup_dir'] = lookup_dir
     _ghostpy_['lookup_url'] = lookup_url
     _ghostpy_['theme'] = theme
开发者ID:pierxco,项目名称:ghostpy,代码行数:10,代码来源:_compiler.py

示例3: run_tests

def run_tests(grammar_iter, tests_iter, expecting=False):
    """ Creates an OMeta grammar from the given grammar iterable, and
        tries to parse each test in the given test iterable
    """
    grammar_string = "".join(grammar_iter)
    parser = OMeta.makeGrammar(grammar_string, {})

    results = []
    failures = []
    for test in tests_iter:
        if expecting:
            to_parse, production, expected = [x.strip() for x in test.split("|||")]
            expected_value = eval(expected)
        else:
            to_parse, production = [x.strip() for x in test.split("|||")]

        application = parser(to_parse)
        try:
            result_value = application.apply(production)
            if not expecting or result_value == expected_value:
                results.append(".")
            else:
                results.append("F")
                fail = "Test %s, %s failed" % (to_parse, production)
                ex = "Expected '%s', got '%s'" % (expected, result_value)
                failures.append((fail, ex))
        except Exception as e:
            results.append("F")
            fail = "Test %s, %s failed" % (to_parse, production)
            ex = "%s: %s" % (e.__class__.__name__, e)
            failures.append((fail, ex))

    return results, failures
开发者ID:jeffd,项目名称:soft-dev,代码行数:33,代码来源:test_grammar.py

示例4: test_spaces

    def test_spaces(self):
        Grammar = OMeta.makeGrammar(r"""
spaces_and_letters = spaces letter+:letters -> letters 
""", {})

        result, error = Grammar(" a").apply("spaces_and_letters")
        assert result == ['a']
开发者ID:thepian,项目名称:themaestro,代码行数:7,代码来源:test_ometa.py

示例5: test_constant_bits

    def test_constant_bits(self):
        Grammar = OMeta.makeGrammar(r"""
var = "var" spaces letter+:name ';' -> ['var', ''.join(name)]
""", {})
        g = Grammar("var myvar;")
        result,error = g.apply("var")
        assert result == ['var', 'myvar']
开发者ID:thepian,项目名称:themaestro,代码行数:7,代码来源:test_ometa.py

示例6: test_subclassing

    def test_subclassing(self):
        """
        A subclass of an OMeta subclass should be able to call rules on its
        parent, and access variables in its scope.
        """
        from pymeta.grammar import OMeta

        grammar1 = """
        dig ::= :x ?(a <= x <= b) => int(x)
        """
        TestGrammar1 = OMeta.makeGrammar(grammar1, {'a':'0', 'b':'9'})

        grammar2 = """
        num ::= (<num>:n <dig>:d => n * base + d
                | <dig>)
        """
        TestGrammar2 = TestGrammar1.makeGrammar(grammar2, {'base':10})
        g = TestGrammar2("314159")
        self.assertEqual(g.apply("num")[0], 314159)

        grammar3 = """
        dig ::= :x ?(a <= x <= b or c <= x <= d) => int(x, base)
        """
        TestGrammar3 = TestGrammar2.makeGrammar(grammar3, {'c':'a', 'd':'f', 'base':16})
        g = TestGrammar3("abc123")
        self.assertEqual(g.apply("num")[0], 11256099)
开发者ID:thepian,项目名称:themaestro,代码行数:26,代码来源:test_pymeta.py

示例7: rdfaProcessSLAXML

def rdfaProcessSLAXML(node):
    """
    Given an SLA node that has been preprocessed, remove sep tags and freqStart
    tags, put in frequencies and spell wrappers.
    """
    globs = globals().copy()
    tree = NodeTree()
    tree.useNode(node)
    globs.update({'t':tree,
        'ww': lambda *x:None,
        # 'ww': debugWrite,
        })

    RDFaParser = OMeta.makeGrammar(rdfaGrammar, globs, 'RDFaParser')

    seq = flattenSLATree(tree.node)[1:]
    try:
        parser = RDFaParser(seq)
        parser.apply('sla')
    except ParseError:
        def propify(x):
            if hasattr(x, 'nodeName') and x.nodeName == 'span':
                if x.hasAttribute('p:property'):
                    return '<PROP {0}>'.format(x.getAttribute('p:property'))
            return x
        print map(propify, parser.input.data[:parser.input.position])
        print map(propify, parser.input.data[parser.input.position:])
        raise
    return tree.node
开发者ID:corydodt,项目名称:Playtools,代码行数:29,代码来源:slaxmlparser.py

示例8: preprocessSLAXML

def preprocessSLAXML(node):
    """
    Given that node is a DOM element containing spell-like ability descriptions, insert
    additional DOM nodes into the text where interesting properties are found.
    """
    node.ownerDocument.documentElement.setAttribute(u'xmlns:p', PROP)
    title = node.getElementsByTagName(u'b')[0]
    title.setAttribute(u'p:property', u'powerName')

    def addSpellNameRDFa(node):
        node.setAttribute(u'p:property', u'spellName')
        #

    spellNames = list( util.doNodes(node, lambda n: n.nodeName == 'i', addSpellNameRDFa) )
    assert len(spellNames) > 0

    globs = globals().copy()
    Preprocessor = OMeta.makeGrammar(preprocGrammar, globs, "Preprocessor")

    todo = node.childNodes[:]
    for n, cn in enumerate(todo):
        if cn.nodeName == 'p':
            todo[n+1:n+1] = cn.childNodes[:]
            continue
        if cn.nodeName == '#text':
            parsed = []
            globs['A'] = lambda *x: parsed.extend(x)
            Preprocessor(cn.data).apply('slaText')
            nodes = joinRaw(parsed)
            substituteSLAText(cn, nodes)

    return node
开发者ID:corydodt,项目名称:Playtools,代码行数:32,代码来源:slaxmlparser.py

示例9: no_test_begin

    def no_test_begin(self):
        Grammar = OMeta.makeGrammar(r"""
from_start = begin 'a' -> 'a'
at_end = 'b' end -> 'b'
any = (from_start | at_end)*
""", {})
        result, error = Grammar(" a").apply("any")
        assert result == []
开发者ID:thepian,项目名称:themaestro,代码行数:8,代码来源:test_ometa.py

示例10: test_allow_comments

    def test_allow_comments(self):
        """
        Full line comments before a rule is allowed
        Make sure that the boot.py version supports comments
        """
        from pymeta.grammar import OMeta
        g = OMeta.makeGrammar("""
# comment for interp
interp = "Foo" 1 2 -> 3
            """,{})
        self.assertEqual(g(['F', 'o', 'o', 1, 2]).apply("interp")[0], 3)

        g = OMeta.makeGrammar("""
// comment for interp
interp = "Foo" 1 2 -> 3
            """,{})
        self.assertEqual(g(['F', 'o', 'o', 1, 2]).apply("interp")[0], 3)
开发者ID:thepian,项目名称:themaestro,代码行数:17,代码来源:test_pymeta.py

示例11: parse

def parse(s):
    """
    Produce a sequence of UIState objects from a text representation of a
    seedo diagram
    """
    globs = globals().copy()
    global Parser
    if Parser is None:
        Parser = OMeta.makeGrammar(seedoGrammar, globs, "Parser")
    return Parser(s).apply('uiTests')
开发者ID:corydodt,项目名称:Personal,代码行数:10,代码来源:grammar.py

示例12: test_end

    def test_end(self):
        Grammar = OMeta.makeGrammar(r"""
at_end = 'b' end -> 'b|'
any = (at_end | anything)*
""", {})
        result, error = Grammar(" a").apply("any")
        assert result == [' ','a']
        result, error = Grammar("b a").apply("any")
        assert result == ['b',' ','a']
        result, error = Grammar(" ab").apply("any")
        assert result == [' ','a','b|']
开发者ID:thepian,项目名称:themaestro,代码行数:11,代码来源:test_ometa.py

示例13: test_super

 def test_super(self):
     """
     Rules can call the implementation in a superclass.
     """
     from pymeta.grammar import OMeta
     grammar1 = "expr ::= <letter>"
     TestGrammar1 = OMeta.makeGrammar(grammar1, {})
     grammar2 = "expr ::= <super> | <digit>"
     TestGrammar2 = TestGrammar1.makeGrammar(grammar2, {})
     self.assertEqual(TestGrammar2("x").apply("expr")[0], "x")
     self.assertEqual(TestGrammar2("3").apply("expr")[0], "3")
开发者ID:thepian,项目名称:themaestro,代码行数:11,代码来源:test_pymeta.py

示例14: test_read_ahead

    def test_read_ahead(self):
        Grammar = OMeta.makeGrammar(r"""
attribute = bool | valued
bool = (letter+):name ~('=') -> (''.join(name),True)
valued = (letter+):name '=' (letter+):value -> (''.join(name),''.join(value))
""", {})

        g = Grammar("a")
        result,error = g.apply("attribute")
        assert result == ('a',True)

        g = Grammar("a=b")
        result,error = g.apply("attribute")
        assert result == ('a','b')
开发者ID:thepian,项目名称:themaestro,代码行数:14,代码来源:test_ometa.py

示例15: test_makeGrammar

 def test_makeGrammar(self):
     #imported here to prevent OMetaGrammar from being constructed before
     #tests are run
     from pymeta.grammar import OMeta
     results = []
     grammar = """
     digit ::= :x ?('0' <= x <= '9') => int(x)
     num ::= (<num>:n <digit>:d !(results.append(True)) => n * 10 + d
            | <digit>)
     """
     TestGrammar = OMeta.makeGrammar(grammar, {'results':results})
     g = TestGrammar("314159")
     self.assertEqual(g.apply("num")[0], 314159)
     self.assertNotEqual(len(results), 0)
开发者ID:thepian,项目名称:themaestro,代码行数:14,代码来源:test_pymeta.py


注:本文中的pymeta.grammar.OMeta类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。