1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.themis.lethe.analysis;
18
19 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
20 import io.github.tonywasher.joceanus.themis.lethe.analysis.ThemisAnalysisContainer.ThemisAnalysisAdoptable;
21
22 import java.util.ArrayDeque;
23 import java.util.Deque;
24
25
26
27
28 public class ThemisAnalysisLambda
29 implements ThemisAnalysisContainer, ThemisAnalysisAdoptable {
30
31
32
33 static final String LAMBDA = "-> " + ThemisAnalysisChar.BRACE_OPEN;
34
35
36
37
38 private ThemisAnalysisContainer theParent;
39
40
41
42
43 private final Deque<ThemisAnalysisElement> theContents;
44
45
46
47
48 private final ThemisAnalysisDataMap theDataMap;
49
50
51
52
53
54
55
56
57 ThemisAnalysisLambda(final ThemisAnalysisParser pParser,
58 final ThemisAnalysisLine pLine) throws OceanusException {
59
60 theParent = pParser.getParent();
61 theDataMap = new ThemisAnalysisDataMap(theParent.getDataMap());
62
63
64 final Deque<ThemisAnalysisElement> myLines = ThemisAnalysisBuilder.processBody(pParser);
65
66
67 theContents = new ArrayDeque<>();
68 final ThemisAnalysisParser myParser = new ThemisAnalysisParser(myLines, theContents, this);
69
70
71 myParser.processLines();
72 }
73
74 @Override
75 public Deque<ThemisAnalysisElement> getContents() {
76 return theContents;
77 }
78
79 @Override
80 public ThemisAnalysisContainer getParent() {
81 return theParent;
82 }
83
84 @Override
85 public void setParent(final ThemisAnalysisContainer pParent) {
86 theParent = pParent;
87 theDataMap.setParent(pParent.getDataMap());
88 }
89
90 @Override
91 public ThemisAnalysisDataMap getDataMap() {
92 return theDataMap;
93 }
94
95 @Override
96 public int getNumLines() {
97 return 0;
98 }
99
100
101
102
103
104
105
106 static boolean checkLambda(final ThemisAnalysisLine pLine) {
107
108 return pLine.endsWithSequence(LAMBDA);
109 }
110 }