query = "$query dict= %s." % q
- (new_rules, _changed) = self.default(query, show_changed=False)
+ (new_rules, _changed) = self.add_rule(query, show_changed=False)
try:
[(_, _, results)] = self.interp.chart['$query/0'][:,]
print '%s = %s.' % (term, _repr(todyna(result['$val'])))
print
- def default(self, line, show_changed=True):
+ def default(self, line):
"""
Called on an input line when the command prefix is not recognized. In
that case we execute the line as Python code.
if not line.endswith('.'):
print "ERROR: Line doesn't end with period."
return
+ self.add_rule(line)
+ def add_rule(self, line, show_changed=True):
try:
src = self.interp.dynac_code(line + ' %% repl line %s' % self.lineno)
except DynaCompilerError as e:
else:
new_rules = self.interp.load_plan(src)
changed = self.interp.run_agenda()
-
if show_changed:
self._changed(changed)
-
return (new_rules, changed)
def _changed(self, changed):
if not changed:
return
-
changed = [x for x in changed if not x.fn.startswith('$rule/')]
-
if not changed:
return
-
print
print 'Changes'
print '======='
query = "$trace dict= _ is (%s), &(%s)." % (q,q)
- (new_rules, _changed) = self.default(query, show_changed=False)
+ (new_rules, _changed) = self.add_rule(query, show_changed=False)
try:
[(_, _, results)] = self.interp.chart['$trace/0'][:,]