Beispiel #1
0
    def test_Concept(self):
        red = Sequence.from_string("red")
        green = Sequence.from_string("green")
        blue = Sequence.from_string("blue")
        alphabet = Choice([red,green,blue])
        lexer = lexer_factory(alphabet)

        def concept_translator_fun(inputtokens):
            result = []
            for x,_ in inputtokens:
                if x == "red" or x == ["r","e","d"]:
                    result.append("color red")
                elif x == "green" or x == ["g","r","e","e","n"]:
                    result.append("color green")
                elif x == "blue" or x == ["b","l","u","e"]:
                    result.append("color blue")
                else:
                    raise Exception("%s,%s" % (x, x.__class__.__name__))

            return result

        ct = concept_translator_fun

        self.assertListEqual(ct(lexer("red")), ["color red"])
        self.assertListEqual(ct(lexer([x for x in "red"])), ["color red"])
Beispiel #2
0
def __generateStringSymbol(rightside):
    head, tail = rightside.split(",", 1)
    if head != "String":
        raise TypeError
    content = tail
    if len(tail) > 2 and tail[1][0] == "'" and tail[1][-1] == "'":
        content = tail[1][1:-1]
    from pydsl.grammar.PEG import Sequence
    return TerminalSymbol(Sequence.from_string(content))
Beispiel #3
0
 def testCheck(self):
     from pydsl.grammar.PEG import Sequence
     from pydsl.check import SequenceChecker
     sequence = Sequence((String("a"), String("b"), String("c")))
     checker = SequenceChecker(sequence)
     self.assertTrue(checker.check("abc"))
     self.assertTrue(checker.check([x for x in "abc"]))
     self.assertFalse(checker.check("abd"))
     self.assertFalse(checker.check(""))
Beispiel #4
0
 def testSecondLevelGrammar(self):
     a = String("a")
     b = String("b")
     c = String("c")
     x = String("x")
     y = String("y")
     z = String("z")
     first_level = Choice([a, b, c])
     first_levelb = Choice([x, y, z])
     second_level = Sequence([a, b], base_alphabet=first_level)
     from pydsl.check import checker_factory
     checker = checker_factory(second_level)
     self.assertTrue(checker([a, b]))
     second_level_alphabet = Choice([first_level, first_levelb])
     lexer = lexer_factory(second_level_alphabet,
                           base=first_level + first_levelb)
     self.assertListEqual(
         lexer("ab"), [Token("a", first_level),
                       Token("b", first_level)])
Beispiel #5
0
__all__ = ['repository', 'iclass', 'root_rule', 'rules']
rules = """digit = anything:x ?(x in '0123456789')
number = <digit+>:ds -> int(ds)
expr = number:left ( '+' number:right -> left + right
                   | -> left)"""

root_rule="expr"

from pydsl.grammar.PEG import Sequence
repository={'string':Sequence.from_string('fas')}
iclass="parsley"

Beispiel #6
0
 def testSequence(self):
     mygrammar = Sequence((String("a"), String("b")))
     self.assertTrue(isinstance(mygrammar, Grammar))
Beispiel #7
0
__all__ = ['repository', 'iclass', 'root_rule', 'rules']
rules = """digit = anything:x ?(x in '0123456789')
number = <digit+>:ds -> int(ds)
expr = number:left ( '+' number:right -> left + right
                   | -> left)"""

root_rule = "expr"

from pydsl.grammar.PEG import Sequence
repository = {'string': Sequence.from_string('fas')}
iclass = "parsley"