Пример #1
0
 def __init__(self, module):
     Checker.__init__(self)
     self._matchFun = module["matchFun"]
     auxdic = module.get('auxdic', {})
     self.auxgrammar = {}
     for key, value in auxdic.items():
         self.auxgrammar[key] = load_checker(value)
Пример #2
0
 def __auxcheck(self, specdict, data):
     for key, spec in specdict.items():
         value = data.get(key)
         if key == "$or" and len(specdict) == 1:
             return any([self.__auxcheck(x, data) for x in spec])
         elif isinstance(spec, dict) and len(spec) == 1:
             operator = list(spec.keys())[0]
             operand = list(spec.values())[0]
             if operator == "$type":
                 if not load_checker(operand).check(str(value)):
                     return False
             elif operator == "$or":
                 if not any([self.__auxcheck({key:x}, data) for x in operand]):
                     return False
             else: #unknown operator
                 return spec == value
         elif isinstance(spec, dict):
             if not self.__auxcheck(spec, value):
                 return False
         else:
             if spec != value: 
                 return False
     return True
Пример #3
0
 def check(self, word):
     if not self._matchFun:
         from pydsl.Memory.Storage.Loader import load_checker
         self._matchFun = load_checker(self.dictionary)
     return self._matchFun.check(word)
Пример #4
0
 def check(self, word):
     if not self.__checker:
         from pydsl.Memory.Storage.Loader import load_checker
         self.__checker = load_checker(self.__bnf)
     return self.__checker.check(word)
Пример #5
0
 def __init__(self, name, definitionrequirementsdic, boundariesrules):
     TerminalSymbol.__init__(self, name, 49, boundariesrules)
     self.grammarname = definitionrequirementsdic["grammarname"]
     from pydsl.Memory.Storage.Loader import load_grammar, load_checker
     grammar = load_grammar(self.grammarname)
     self.checker =  load_checker(grammar)
Пример #6
0
 def testloadgrammar(self):
     #Load a grammar that uses a package (integerOPGrammar), call check
     from pydsl.Memory.Storage.Loader import load_checker
     grammar = load_checker("integerop")
     self.assertTrue(grammar.check("123+3"))