Coverage for kye/parser/kye_transformer.py: 50%
30 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-13 15:17 -0700
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-13 15:17 -0700
1from kye.parser.kye_ast import *
2from lark import Transformer, visitors
4@visitors.v_args(meta=True)
5class TreeToKye(Transformer):
6 def ESCAPED_STRING(self, n):
7 return n[1:-1]
9 def SIGNED_NUMBER(self, n):
10 return float(n)
12 def index(self, meta, children):
13 return Index(edges=children, meta=meta)
15 def type_ref(self, meta, children):
16 return TypeRef(
17 name=children[0],
18 index=children[1] if len(children) > 1 and isinstance(children[1], Index) else None,
19 meta=meta
20 )
22 def TYPE(self, n):
23 return n.value
25 def EDGE(self, n):
26 return n.value
28 def CARDINALITY(self, n):
29 return n.value
31 def edge(self, meta, children):
32 name = children[0]
33 typ = children[1] if len(children) > 1 else None
34 cardinality = children[2] if len(children) > 2 else None
35 return Edge(name=name, typ=typ, cardinality=cardinality, meta=meta)
37 def alias(self, meta, children):
38 name, typ = children
39 return TypeAlias(name=name, typ=typ, meta=meta)
41 def model(self, meta, children):
42 return Model(
43 name=children[0],
44 indexes=[child for child in children[1:] if isinstance(child, Index)],
45 edges=[child for child in children[1:] if isinstance(child, Edge)],
46 meta=meta,
47 )
49 def start(self, meta, children):
50 return Script(children=children, meta=meta)