Python pyparsing.Or() Examples
The following are 7
code examples of pyparsing.Or().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pyparsing
, or try the search function
.
Example #1
Source File: expansions.py From pyjsgf with MIT License | 6 votes |
def compile(self, ignore_tags=False): super(AlternativeSet, self).compile() if self._weights: self._validate_weights() # Create a string with w=weight and e=compiled expansion # such that: # /<w 0>/ <e 0> | ... | /<w n-1>/ <e n-1> alt_set = "|".join([ "/%.4f/ %s" % (float(self._weights[e]), e.compile(ignore_tags)) for e in self.children ]) else: # Or do the same thing without the weights alt_set = "|".join([ e.compile(ignore_tags) for e in self.children ]) if self.tag and not ignore_tags: return "(%s)%s" % (alt_set, self.compiled_tag) else: return "(%s)" % alt_set
Example #2
Source File: expansions.py From pyjsgf with MIT License | 6 votes |
def _make_matcher_element(self): # Return an element that can match the alternatives. if self._weights: self._validate_weights() # Exclude alternatives that have a weight value of 0. children = [] for e, w in self._weights.items(): if w > 0: children.append((e, w)) # Sort the list by weight (highest to lowest). children = [e for e, _ in sorted(children, key=lambda x: x[1])] children.reverse() else: children = self.children return self._set_matcher_element_attributes(pyparsing.Or([ e.matcher_element for e in children ]))
Example #3
Source File: expression_parser.py From rekall with GNU General Public License v2.0 | 6 votes |
def _build_precedence(self, precedence_table): # C's & dereference operator. precedence = [] for operators, arity, associativity in precedence_table: operators = [pyparsing.Literal(x) for x in operators] if arity in [_UNARY, _BINARY]: operators = pyparsing.Or(operators) precedence.append(( operators, arity, associativity, self._construct_operator(arity), )) return precedence
Example #4
Source File: cmd2plus.py From OpenTrader with GNU Lesser General Public License v3.0 | 5 votes |
def complete_statement(self, line): """Keep accepting lines of input until the command is complete.""" if (not line) or ( not pyparsing.Or(self.commentGrammars). setParseAction(lambda x: '').transformString(line)): raise EmptyStatement() statement = self.parsed(line) while statement.parsed.multilineCommand and (statement.parsed.terminator == ''): statement = '%s\n%s' % (statement.parsed.raw, self.pseudo_raw_input(self.continuation_prompt)) statement = self.parsed(statement) if not statement.parsed.command: raise EmptyStatement() return statement
Example #5
Source File: cmd2.py From Beehive with GNU General Public License v3.0 | 5 votes |
def complete_statement(self, line): """Keep accepting lines of input until the command is complete.""" if (not line) or ( not pyparsing.Or(self.commentGrammars). setParseAction(lambda x: '').transformString(line)): raise EmptyStatement() statement = self.parsed(line) while statement.parsed.multilineCommand and (statement.parsed.terminator == ''): statement = '%s\n%s' % (statement.parsed.raw, self.pseudo_raw_input(self.continuation_prompt)) statement = self.parsed(statement) if not statement.parsed.command: raise EmptyStatement() return statement
Example #6
Source File: test_diagram.py From pyparsing with MIT License | 5 votes |
def test_none_name(self): grammar = Or(["foo", "bar"]) railroad = to_railroad(grammar) assert len(railroad) == 1 assert railroad[0].name is not None
Example #7
Source File: expansions.py From pyjsgf with MIT License | 4 votes |
def _make_matcher_element(self): # Handle the case where use_current_match is True. if self.use_current_match is True: current_match = self.current_match if current_match is None: result = pyparsing.NoMatch() elif current_match == "": result = pyparsing.Empty() else: result = pyparsing.Literal(self.current_match) # Set the parse action and return the element. return result.setParseAction(self._parse_action) # Otherwise build a list of next possible literals. Make the required stack # of child-parent pairs. stack = [] p1, p2 = self, self.parent while p1 and p2: stack.append((p1, p2)) # Move both pivots further up the tree. p1 = p1.parent p2 = p2.parent # Build a list of next literals using the stack. next_literals, _ = _collect_next_literals(stack, 0, True, False) # De-duplicate the list. next_literals = set(next_literals) word = pyparsing.Regex(_word_regex_str, re.UNICODE) if next_literals: # Check if there is a next dictation literal. If there is, only match # one word for this expansion. if _word_regex_str in next_literals: result = word # Otherwise build an element to match one or more words stopping on # any of the next literals so that they aren't matched as dictation. else: next_literals = list(map(pyparsing.Literal, next_literals)) result = pyparsing.OneOrMore( word, stopOn=pyparsing.Or(next_literals) ) else: # Handle the case of no literals ahead by allowing one or more Unicode # words without restrictions. result = pyparsing.OneOrMore(word) return self._set_matcher_element_attributes(result)