-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
37 lines (29 loc) · 875 Bytes
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import ast
import nodes
def fst(t):
(a, _) = t
return a
def snd(t):
(_, b) = t
return b
def make_id(s: str):
return nodes.Fact(s, []) if s[0].islower() else nodes.Var(s)
def make_fact(node):
if isinstance(node.slice.value, ast.Name):
return nodes.Fact(node.value.id, [make_id(node.slice.value.id)])
return nodes.Fact(node.value.id, list(map(lambda a: make_id(a.id), node.slice.value.elts)))
def tab_lines(lines: str):
x = ""
for line in lines.splitlines():
x += "\n " + line
return x
def remove_arity_from_name(name):
new_name = ""
for c in name:
if c == "/": break
new_name += c
return new_name
def str_dict(d):
return "{" + ", ".join([str(k) + ": " + str(v) for k, v in d.items()]) + "}"
def dict_as_eqs(d):
return ", ".join([str(k) + " = " + str(v) for k, v in d.items()])