Exemplo n.º 1
0
    def setUp(self):
        from pydsl.Grammar.Symbol import StringTerminalSymbol, WordTerminalSymbol, NonTerminalSymbol, BoundariesRules, NullSymbol
        from pydsl.Grammar.BNF import TerminalProduction, NonTerminalProduction, BNFGrammar
        br = BoundariesRules("max", 1)

        #productionset1 definition
        symbol1 = StringTerminalSymbol("S")
        symbol2 = StringTerminalSymbol("R")
        symbol3 = StringTerminalSymbol(":")
        symbol4 = WordTerminalSymbol("Integer", {"grammarname":"integer"}, br)
        symbol5 = WordTerminalSymbol("Generic", {"grammarname":"cstring"}, br)
        final1 = NonTerminalSymbol("storeexp") 
        final2 = NonTerminalSymbol("retrieveexp") 
        final3 = NonTerminalSymbol("exp")
        rule1 = NonTerminalProduction([final1], [symbol1, symbol3, symbol5])
        rule2 = NonTerminalProduction([final2], [symbol2, symbol3, symbol4])
        rule3 = NonTerminalProduction([final3], [final1])
        rule4 = NonTerminalProduction([final3], [final2])
        rule5 = TerminalProduction(symbol1)
        rule6 = TerminalProduction(symbol2)
        rule7 = TerminalProduction(symbol3)
        rule8 = TerminalProduction(symbol4)
        rule9 = TerminalProduction(symbol5)
        rulelist = [rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9]
        self.productionset1 = BNFGrammar(final3, rulelist)

        #productionset2 definition
        symbola = StringTerminalSymbol("A")
        symbolb = StringTerminalSymbol("B")
        terminala = TerminalProduction(symbola)
        terminalb = TerminalProduction(symbolb)
        nonterminal = NonTerminalSymbol("res")
        rulea = NonTerminalProduction ([nonterminal], [symbola, NullSymbol(), symbolb])
        self.productionset2 = BNFGrammar(nonterminal, [rulea, terminala, terminalb])
        from pydsl.Memory.Storage.File.BNF import strlist_to_production_set
        self.productionsetlr = strlist_to_production_set(leftrecursive)
        self.productionsetrr = strlist_to_production_set(rightrecursive)
        self.productionsetcr = strlist_to_production_set(centerrecursive)


        #tokenlist definition
        self.tokelist1 = "S:a"
        self.tokelist2 = "S:"
        self.tokelist3 = "AB"
        self.tokelist4 = "ACB"
        self.dots = "....."
Exemplo n.º 2
0
 def setUp(self):
     from pydsl.Grammar.Tool.Symbol import SymbolGrammarTools
     from pydsl.Memory.Storage.File.BNF import strlist_to_production_set
     productionset = strlist_to_production_set(["#parser=descent","S ::= dayofmonth separator number separator number", "separator := String,/","number := Word,integer,max,1","dayofmonth := Word,DayOfMonth,max,1"])
     self.g1 = SymbolGrammarTools(productionset)