def make_patterns_dict(self):
'''Assign all patterns to the appropriate ast.Node.'''
trace = False or self.trace_patterns
for pattern in self.general_patterns:
ops = self.find_pattern_ops(pattern)
if ops:
for op in ops:
# Add the pattern to op's list.
op_names = self.op_name_dict.get(op)
for op_name in op_names:
aList = self.patterns_dict.get(op_name, [])
aList.append(pattern)
self.patterns_dict[op_name] = aList
else:
# Enter the name in self.names_dict.
name = pattern.find_s
# Special case for 'number'
if name == 'number':
aList = self.patterns_dict.get('Num', [])
aList.append(pattern)
self.patterns_dict['Num'] = aList
elif name in self.names_dict:
g.trace('duplicate pattern', pattern)
else:
self.names_dict [name] = pattern.repl_s
if 0:
g.trace('names_dict...')
for z in sorted(self.names_dict):
print(' %s: %s' % (z, self.names_dict.get(z)))
if 0:
g.trace('patterns_dict...')
for z in sorted(self.patterns_dict):
aList = self.patterns_dict.get(z)
print(z)
for pattern in sorted(aList):
print(' '+repr(pattern))
# Note: retain self.general_patterns for use in argument lists.
评论列表
文章目录