Lines Matching refs:self
40 def __init__(self, grammar_file=None):
46 self.grammar = pygram.pattern_grammar
47 self.syms = pygram.pattern_symbols
49 self.grammar = driver.load_grammar(grammar_file)
50 self.syms = pygram.Symbols(self.grammar)
51 self.pygrammar = pygram.python_grammar
52 self.pysyms = pygram.python_symbols
53 self.driver = driver.Driver(self.grammar, convert=pattern_convert)
55 def compile_pattern(self, input, debug=False, with_tree=False):
59 root = self.driver.parse_tokens(tokens, debug=debug)
63 return self.compile_node(root), root
65 return self.compile_node(root)
67 def compile_node(self, node):
74 if node.type == self.syms.Matcher:
77 if node.type == self.syms.Alternatives:
79 alts = [self.compile_node(ch) for ch in node.children[::2]]
85 if node.type == self.syms.Alternative:
86 units = [self.compile_node(ch) for ch in node.children]
92 if node.type == self.syms.NegatedUnit:
93 pattern = self.compile_basic(node.children[1:])
97 assert node.type == self.syms.Unit
105 if len(nodes) >= 2 and nodes[-1].type == self.syms.Repeater:
110 pattern = self.compile_basic(nodes, repeat)
113 assert repeat.type == self.syms.Repeater
125 min = max = self.get_int(children[1])
127 max = self.get_int(children[3])
138 def compile_basic(self, nodes, repeat=None):
157 type = getattr(self.pysyms, value, None)
161 content = [self.compile_node(nodes[1].children[1])]
166 return self.compile_node(nodes[1])
169 subpattern = self.compile_node(nodes[1])
173 def get_int(self, node):