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

1from kye.parser.kye_ast import * 

2from lark import Transformer, visitors 

3 

4@visitors.v_args(meta=True) 

5class TreeToKye(Transformer): 

6 def ESCAPED_STRING(self, n): 

7 return n[1:-1] 

8 

9 def SIGNED_NUMBER(self, n): 

10 return float(n) 

11 

12 def index(self, meta, children): 

13 return Index(edges=children, meta=meta) 

14 

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 ) 

21 

22 def TYPE(self, n): 

23 return n.value 

24 

25 def EDGE(self, n): 

26 return n.value 

27 

28 def CARDINALITY(self, n): 

29 return n.value 

30 

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) 

36 

37 def alias(self, meta, children): 

38 name, typ = children 

39 return TypeAlias(name=name, typ=typ, meta=meta) 

40 

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 ) 

48 

49 def start(self, meta, children): 

50 return Script(children=children, meta=meta)