return {"cnf": cnf}
-def renumber_vars(root, parent=None):
+def renumber_vars(root, parent=None, toplevel=False):
"""
- renumber_vars -- Number cnfvars linearly.
+ renumber_vars -- Number cnfvars linearly. If *parent* is specified,
+ numbering will start at this offset. Also, the VAR *root* will be assigned
+ this number as a parent lineno unless *toplevel* is set (the root var in
+ a CNF tree obviously can’t have a parent).
+
+ The *toplevel* parameter is useful when renumbering an existing variable
+ starting at a given offset without at the same time having that offset
+ assigned as a parent.
"""
if isinstance(root, dict):
- root = root["cnf"]
+ root = cnf_root (root)
i = parent or 0
for var in root:
i += 1
var["number"] = i
- if parent is not None:
+ if toplevel is False and parent is not None:
var["parent"] = parent
children = var.get("children", None)
if children is not None:
- i = renumber_vars(children, i)
+ i = renumber_vars(children, parent=i, toplevel=False)
return i
#