Esempio n. 1
0
 def processor(state):
     state = self(state)
     if isParseError(state):
         return state
     newstate = other(state)
     if isParseError(newstate):
         return newstate
     return setParseSuccessTree(newstate, filter(lambda x: x is not None,
                                                 [parseSuccessTree(state), parseSuccessTree(newstate)]))  # filter out 'skipped' input
Esempio n. 2
0
 def processor(state):
     state = self(state)
     if isParseError(state):
         return state
     newstate = other(state)
     if isParseError(newstate):
         return newstate
     return setParseSuccessTree(
         newstate,
         filter(lambda x: x is not None,
                [parseSuccessTree(state),
                 parseSuccessTree(newstate)
                 ]))  # filter out 'skipped' input
Esempio n. 3
0
 def processor(state):
     newstate = parser(state)
     if isParseSuccess(newstate):
         tree = parseSuccessTree(newstate)
         return setParseSuccessTree(newstate, transform(tree))
     else:
         return newstate
Esempio n. 4
0
 def processor(state):
     newstate = parser(state)
     if isParseSuccess(newstate):
         tree = parseSuccessTree(newstate)
         return setParseSuccessTree(newstate, transform(tree))
     else:
         return newstate
Esempio n. 5
0
 def processor(state):
     tree = []
     for pr in parsers:
         state = pr(state)
         if isParseError(state):
             return state
         tree.append(parseSuccessTree(state))
     return setParseSuccessTree(state, tree)
Esempio n. 6
0
 def processor(state):
     tree = []
     for pr in parsers:
         state = pr(state)
         if isParseError(state):
             return state
         tree.append(parseSuccessTree(state))
     return setParseSuccessTree(state, tree)
Esempio n. 7
0
 def processor(state):
     tree = []
     while True:
         newstate = parser(state)
         if isParseError(newstate):
             break
         tree.append(parseSuccessTree(newstate))
         state = newstate
     return setParseSuccessTree(state, tree) if not inputConsumed(newstate, state) else newstate
Esempio n. 8
0
def parse(parser, input, sourceName=None):
    '''Runs a 'parser' over the 'input'. A 'parser' is either one of the
    many parsers provided by the library, or built by user with the help of
    library's combinators; 'input' is a string to parse; 'sourceName' is
    only used when displaying error messages (defaulted to None)
    '''

    state = parser(initialParseState(sourceName, input))

    return parseSuccessTree(state) if isParseSuccess(state) else showParseError(state)
Esempio n. 9
0
 def processor(state):
     tree = []
     while True:
         newstate = parser(state)
         if isParseError(newstate):
             break
         tree.append(parseSuccessTree(newstate))
         state = newstate
     return setParseSuccessTree(
         state, tree) if not inputConsumed(newstate, state) else newstate
Esempio n. 10
0
def parse(parser, input, sourceName=None):
    '''Runs a 'parser' over the 'input'. A 'parser' is either one of the
    many parsers provided by the library, or built by user with the help of
    library's combinators; 'input' is a string to parse; 'sourceName' is
    only used when displaying error messages (defaulted to None)
    '''

    state = parser(initialParseState(sourceName, input))

    return parseSuccessTree(state) if isParseSuccess(
        state) else showParseError(state)
Esempio n. 11
0
 def processor(state):
     newstate = self(state)
     if isParseError(newstate):
         return newstate
     tree = parseSuccessTree(newstate)
     return f(tree)(newstate)
Esempio n. 12
0
 def processor(state):
     newstate = self(state)
     if isParseError(newstate):
         return newstate
     tree = parseSuccessTree(newstate)
     return f(tree)(newstate)