Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright (c) 2021-2025 ChilliBits. All rights reserved. | ||
2 | |||
3 | #pragma once | ||
4 | |||
5 | #include <functional> | ||
6 | |||
7 | // Ignore some warnings in ANTLR generated code | ||
8 | #pragma GCC diagnostic push | ||
9 | #pragma GCC diagnostic ignored "-Woverloaded-virtual" | ||
10 | #include <SpiceVisitor.h> | ||
11 | #pragma GCC diagnostic pop | ||
12 | |||
13 | #include <CompilerPass.h> | ||
14 | #include <global/GlobalResourceManager.h> | ||
15 | #include <util/CodeLoc.h> | ||
16 | #include <util/GlobalDefinitions.h> | ||
17 | |||
18 | namespace spice::compiler { | ||
19 | |||
20 | // Forward declarations | ||
21 | class ASTNode; | ||
22 | class EntryNode; | ||
23 | class ConstantNode; | ||
24 | |||
25 | static constexpr const char *const RESERVED_KEYWORDS[] = {"new", "stash", "pick", "sync", "class"}; | ||
26 | const char *const MEMBER_ACCESS_TOKEN = "."; | ||
27 | const char *const SCOPE_ACCESS_TOKEN = "::"; | ||
28 | |||
29 | class ASTBuilder final : CompilerPass, public SpiceVisitor { | ||
30 | private: | ||
31 | // Private type defs | ||
32 | using TerminalNode = antlr4::tree::TerminalNode; | ||
33 | using ParserRuleContext = antlr4::ParserRuleContext; | ||
34 | template <typename T> using NumericParserCallback = std::function<T(const std::string &, short, bool)>; | ||
35 | |||
36 | public: | ||
37 | // Constructors | ||
38 | ASTBuilder(GlobalResourceManager &resourceManager, SourceFile *sourceFile, antlr4::ANTLRInputStream *inputStream); | ||
39 | |||
40 | // Public methods | ||
41 | std::any visitEntry(SpiceParser::EntryContext *ctx) override; | ||
42 | std::any visitMainFunctionDef(SpiceParser::MainFunctionDefContext *ctx) override; | ||
43 | std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override; | ||
44 | std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override; | ||
45 | std::any visitFctName(SpiceParser::FctNameContext *ctx) override; | ||
46 | std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override; | ||
47 | std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override; | ||
48 | std::any visitStructDef(SpiceParser::StructDefContext *ctx) override; | ||
49 | std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override; | ||
50 | std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override; | ||
51 | std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override; | ||
52 | std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override; | ||
53 | std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override; | ||
54 | std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override; | ||
55 | std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override; | ||
56 | std::any visitForHead(SpiceParser::ForHeadContext *ctx) override; | ||
57 | std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override; | ||
58 | std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override; | ||
59 | std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override; | ||
60 | std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override; | ||
61 | std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override; | ||
62 | std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override; | ||
63 | std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override; | ||
64 | std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override; | ||
65 | std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override; | ||
66 | std::any visitAnonymousBlockStmt(SpiceParser::AnonymousBlockStmtContext *ctx) override; | ||
67 | std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override; | ||
68 | std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override; | ||
69 | std::any visitTypeAltsLst(SpiceParser::TypeAltsLstContext *ctx) override; | ||
70 | std::any visitParamLst(SpiceParser::ParamLstContext *ctx) override; | ||
71 | std::any visitArgLst(SpiceParser::ArgLstContext *ctx) override; | ||
72 | std::any visitEnumItemLst(SpiceParser::EnumItemLstContext *ctx) override; | ||
73 | std::any visitEnumItem(SpiceParser::EnumItemContext *ctx) override; | ||
74 | std::any visitField(SpiceParser::FieldContext *ctx) override; | ||
75 | std::any visitSignature(SpiceParser::SignatureContext *ctx) override; | ||
76 | std::any visitStmt(SpiceParser::StmtContext *ctx) override; | ||
77 | std::any visitDeclStmt(SpiceParser::DeclStmtContext *ctx) override; | ||
78 | std::any visitExprStmt(SpiceParser::ExprStmtContext *ctx) override; | ||
79 | std::any visitQualifierLst(SpiceParser::QualifierLstContext *ctx) override; | ||
80 | std::any visitQualifier(SpiceParser::QualifierContext *ctx) override; | ||
81 | std::any visitTopLevelDefAttr(SpiceParser::TopLevelDefAttrContext *ctx) override; | ||
82 | std::any visitLambdaAttr(SpiceParser::LambdaAttrContext *ctx) override; | ||
83 | std::any visitModAttr(SpiceParser::ModAttrContext *ctx) override; | ||
84 | std::any visitAttrLst(SpiceParser::AttrLstContext *ctx) override; | ||
85 | std::any visitAttr(SpiceParser::AttrContext *ctx) override; | ||
86 | std::any visitCaseConstant(SpiceParser::CaseConstantContext *ctx) override; | ||
87 | std::any visitReturnStmt(SpiceParser::ReturnStmtContext *ctx) override; | ||
88 | std::any visitBreakStmt(SpiceParser::BreakStmtContext *ctx) override; | ||
89 | std::any visitContinueStmt(SpiceParser::ContinueStmtContext *ctx) override; | ||
90 | std::any visitFallthroughStmt(SpiceParser::FallthroughStmtContext *ctx) override; | ||
91 | std::any visitAssertStmt(SpiceParser::AssertStmtContext *ctx) override; | ||
92 | std::any visitBuiltinCall(SpiceParser::BuiltinCallContext *ctx) override; | ||
93 | std::any visitPrintfCall(SpiceParser::PrintfCallContext *ctx) override; | ||
94 | std::any visitSizeOfCall(SpiceParser::SizeOfCallContext *ctx) override; | ||
95 | std::any visitAlignOfCall(SpiceParser::AlignOfCallContext *ctx) override; | ||
96 | std::any visitLenCall(SpiceParser::LenCallContext *ctx) override; | ||
97 | std::any visitPanicCall(SpiceParser::PanicCallContext *ctx) override; | ||
98 | std::any visitSysCall(SpiceParser::SysCallContext *ctx) override; | ||
99 | std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override; | ||
100 | std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override; | ||
101 | std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override; | ||
102 | std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override; | ||
103 | std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override; | ||
104 | std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override; | ||
105 | std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override; | ||
106 | std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override; | ||
107 | std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override; | ||
108 | std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override; | ||
109 | std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override; | ||
110 | std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override; | ||
111 | std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override; | ||
112 | std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override; | ||
113 | std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override; | ||
114 | std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override; | ||
115 | std::any visitValue(SpiceParser::ValueContext *ctx) override; | ||
116 | std::any visitFctCall(SpiceParser::FctCallContext *ctx) override; | ||
117 | std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override; | ||
118 | std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override; | ||
119 | std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override; | ||
120 | std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override; | ||
121 | std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override; | ||
122 | std::any visitConstant(SpiceParser::ConstantContext *ctx) override; | ||
123 | std::any visitDataType(SpiceParser::DataTypeContext *ctx) override; | ||
124 | std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override; | ||
125 | std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override; | ||
126 | std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override; | ||
127 | std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override; | ||
128 | std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override; | ||
129 | |||
130 | private: | ||
131 | // Members | ||
132 | antlr4::ANTLRInputStream *inputStream; | ||
133 | std::stack<ASTNode *> parentStack; | ||
134 | |||
135 | // Private methods | ||
136 | template <typename SrcTy, typename TgtTy> | ||
137 | 613918 | void fetchChildrenIntoVector(std::vector<TgtTy> &tgt, const std::vector<SrcTy> &src) | |
138 | requires(std::is_pointer_v<SrcTy> && std::is_pointer_v<TgtTy>) | ||
139 | { | ||
140 | 613918 | tgt.reserve(src.size()); | |
141 |
2/2✓ Branch 0 (13→6) taken 644244 times.
✓ Branch 1 (13→14) taken 613897 times.
|
1258141 | for (SrcTy shiftExpr : src) |
142 |
4/6✓ Branch 0 (7→8) taken 644223 times.
✓ Branch 1 (7→17) taken 21 times.
✓ Branch 2 (8→9) taken 644223 times.
✗ Branch 3 (8→15) not taken.
✓ Branch 4 (9→10) taken 644223 times.
✗ Branch 5 (9→15) not taken.
|
644244 | tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr))); |
143 | 613897 | } | |
144 | |||
145 | template <typename T> | ||
146 | 1268394 | T *createNode(const ParserRuleContext *ctx) | |
147 | requires std::is_base_of_v<ASTNode, T> | ||
148 | { | ||
149 | // Create the new node | ||
150 |
1/2✓ Branch 0 (9→10) taken 1268394 times.
✗ Branch 1 (9→14) not taken.
|
1268394 | T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx)); |
151 | if constexpr (!std::is_same_v<T, EntryNode>) | ||
152 | 1267375 | node->parent = parentStack.top(); | |
153 | // This node is the parent for its children | ||
154 |
1/2✓ Branch 0 (11→12) taken 1268394 times.
✗ Branch 1 (11→15) not taken.
|
1268394 | parentStack.push(node); |
155 | 1268394 | return node; | |
156 | } | ||
157 | |||
158 | template <typename T> | ||
159 | ALWAYS_INLINE T *resumeForExpansion() const | ||
160 | requires std::is_base_of_v<ASTNode, T> | ||
161 | { | ||
162 |
4/8✓ Branch 0 (3→4) taken 1501 times.
✗ Branch 1 (3→5) not taken.
✓ Branch 2 (3→4) taken 5806 times.
✗ Branch 3 (3→5) not taken.
✓ Branch 4 (3→4) taken 88 times.
✗ Branch 5 (3→5) not taken.
✓ Branch 6 (3→4) taken 1036 times.
✗ Branch 7 (3→5) not taken.
|
16862 | return spice_pointer_cast<T *>(parentStack.top()); |
163 | } | ||
164 | |||
165 | template <typename T> | ||
166 | ALWAYS_INLINE T *concludeNode(T *node) | ||
167 | requires std::is_base_of_v<ASTNode, T> | ||
168 | { | ||
169 | // This node is no longer the parent for its children | ||
170 |
83/166✗ Branch 0 (19→20) not taken.
✓ Branch 1 (19→21) taken 94 times.
✗ Branch 2 (40→41) not taken.
✓ Branch 3 (40→42) taken 13021 times.
✗ Branch 4 (46→47) not taken.
✓ Branch 5 (46→48) taken 36372 times.
✗ Branch 6 (63→64) not taken.
✓ Branch 7 (63→65) taken 36372 times.
✗ Branch 8 (15→16) not taken.
✓ Branch 9 (15→17) taken 1 times.
✗ Branch 10 (22→23) not taken.
✓ Branch 11 (22→24) taken 27 times.
✗ Branch 12 (26→27) not taken.
✓ Branch 13 (26→28) taken 12 times.
✗ Branch 14 (47→48) not taken.
✓ Branch 15 (47→49) taken 211 times.
✗ Branch 16 (11→12) not taken.
✓ Branch 17 (11→13) taken 66 times.
✗ Branch 18 (53→54) not taken.
✓ Branch 19 (53→55) taken 12893 times.
✗ Branch 20 (48→49) not taken.
✓ Branch 21 (48→50) taken 14493 times.
✗ Branch 22 (54→55) not taken.
✓ Branch 23 (54→56) taken 14122 times.
✗ Branch 24 (80→81) not taken.
✓ Branch 25 (80→82) taken 71343 times.
✗ Branch 26 (38→39) not taken.
✓ Branch 27 (38→40) taken 90757 times.
✗ Branch 28 (40→41) not taken.
✓ Branch 29 (40→42) taken 72392 times.
✗ Branch 30 (15→16) not taken.
✓ Branch 31 (15→17) taken 65537 times.
✗ Branch 32 (34→35) not taken.
✓ Branch 33 (34→36) taken 64421 times.
✗ Branch 34 (29→30) not taken.
✓ Branch 35 (29→31) taken 61216 times.
✗ Branch 36 (37→38) not taken.
✓ Branch 37 (37→39) taken 61155 times.
✗ Branch 38 (19→20) not taken.
✓ Branch 39 (19→21) taken 58222 times.
✗ Branch 40 (13→14) not taken.
✓ Branch 41 (13→15) taken 53831 times.
✗ Branch 42 (7→8) not taken.
✓ Branch 43 (7→9) taken 53804 times.
✗ Branch 44 (7→8) not taken.
✓ Branch 45 (7→9) taken 53800 times.
✗ Branch 46 (7→8) not taken.
✓ Branch 47 (7→9) taken 53736 times.
✗ Branch 48 (7→8) not taken.
✓ Branch 49 (7→9) taken 53507 times.
✗ Branch 50 (7→8) not taken.
✓ Branch 51 (7→9) taken 52398 times.
✗ Branch 52 (30→31) not taken.
✓ Branch 53 (30→32) taken 51805 times.
✗ Branch 54 (26→27) not taken.
✓ Branch 55 (26→28) taken 57446 times.
✗ Branch 56 (7→8) not taken.
✓ Branch 57 (7→9) taken 1 times.
✗ Branch 58 (8→9) not taken.
✓ Branch 59 (8→10) taken 686 times.
✗ Branch 60 (8→9) not taken.
✓ Branch 61 (8→10) taken 33 times.
✗ Branch 62 (16→17) not taken.
✓ Branch 63 (16→18) taken 11 times.
✗ Branch 64 (16→17) not taken.
✓ Branch 65 (16→18) taken 199 times.
✗ Branch 66 (15→16) not taken.
✓ Branch 67 (15→17) taken 711 times.
✗ Branch 68 (47→48) not taken.
✓ Branch 69 (47→49) taken 1641 times.
✗ Branch 70 (16→17) not taken.
✓ Branch 71 (16→18) taken 634 times.
✗ Branch 72 (6→7) not taken.
✓ Branch 73 (6→8) taken 6 times.
✗ Branch 74 (13→14) not taken.
✓ Branch 75 (13→15) taken 179 times.
✗ Branch 76 (13→14) not taken.
✓ Branch 77 (13→15) taken 102 times.
✗ Branch 78 (11→12) not taken.
✓ Branch 79 (11→13) taken 7588 times.
✗ Branch 80 (50→51) not taken.
✓ Branch 81 (50→52) taken 70 times.
✗ Branch 82 (52→53) not taken.
✓ Branch 83 (52→54) taken 1185 times.
✗ Branch 84 (7→8) not taken.
✓ Branch 85 (7→9) taken 746 times.
✗ Branch 86 (14→15) not taken.
✓ Branch 87 (14→16) taken 16 times.
✗ Branch 88 (8→9) not taken.
✓ Branch 89 (8→10) taken 436 times.
✗ Branch 90 (14→15) not taken.
✓ Branch 91 (14→16) taken 294 times.
✗ Branch 92 (34→35) not taken.
✓ Branch 93 (34→36) taken 28300 times.
✗ Branch 94 (26→27) not taken.
✓ Branch 95 (26→28) taken 23621 times.
✗ Branch 96 (8→9) not taken.
✓ Branch 97 (8→10) taken 10868 times.
✗ Branch 98 (19→20) not taken.
✓ Branch 99 (19→21) taken 15880 times.
✗ Branch 100 (64→65) not taken.
✓ Branch 101 (64→66) taken 188 times.
✗ Branch 102 (20→21) not taken.
✓ Branch 103 (20→22) taken 1272 times.
✗ Branch 104 (13→14) not taken.
✓ Branch 105 (13→15) taken 741 times.
✗ Branch 106 (7→8) not taken.
✓ Branch 107 (7→9) taken 66 times.
✗ Branch 108 (9→10) not taken.
✓ Branch 109 (9→11) taken 10178 times.
✗ Branch 110 (13→14) not taken.
✓ Branch 111 (13→15) taken 6694 times.
✗ Branch 112 (7→8) not taken.
✓ Branch 113 (7→9) taken 761 times.
✗ Branch 114 (7→8) not taken.
✓ Branch 115 (7→9) taken 4963 times.
✗ Branch 116 (107→108) not taken.
✓ Branch 117 (107→109) taken 16786 times.
✗ Branch 118 (8→9) not taken.
✓ Branch 119 (8→10) taken 27 times.
✗ Branch 120 (8→9) not taken.
✓ Branch 121 (8→10) taken 6 times.
✗ Branch 122 (11→12) not taken.
✓ Branch 123 (11→13) taken 53 times.
✗ Branch 124 (18→19) not taken.
✓ Branch 125 (18→20) taken 12 times.
✗ Branch 126 (16→17) not taken.
✓ Branch 127 (16→18) taken 171 times.
✗ Branch 128 (19→20) not taken.
✓ Branch 129 (19→21) taken 3401 times.
✗ Branch 130 (12→13) not taken.
✓ Branch 131 (12→14) taken 9 times.
✗ Branch 132 (12→13) not taken.
✓ Branch 133 (12→14) taken 576 times.
✗ Branch 134 (11→12) not taken.
✓ Branch 135 (11→13) taken 88 times.
✗ Branch 136 (11→12) not taken.
✓ Branch 137 (11→13) taken 1036 times.
✗ Branch 138 (8→9) not taken.
✓ Branch 139 (8→10) taken 2079 times.
✗ Branch 140 (17→18) not taken.
✓ Branch 141 (17→19) taken 476 times.
✗ Branch 142 (41→42) not taken.
✓ Branch 143 (41→43) taken 853 times.
✗ Branch 144 (19→20) not taken.
✓ Branch 145 (19→21) taken 765 times.
✗ Branch 146 (24→25) not taken.
✓ Branch 147 (24→26) taken 47 times.
✗ Branch 148 (12→13) not taken.
✓ Branch 149 (12→14) taken 761 times.
✗ Branch 150 (26→27) not taken.
✓ Branch 151 (26→28) taken 66 times.
✗ Branch 152 (68→69) not taken.
✓ Branch 153 (68→70) taken 82 times.
✗ Branch 154 (78→79) not taken.
✓ Branch 155 (78→80) taken 589 times.
✗ Branch 156 (30→31) not taken.
✓ Branch 157 (30→32) taken 8964 times.
✗ Branch 158 (47→48) not taken.
✓ Branch 159 (47→49) taken 2956 times.
✗ Branch 160 (51→52) not taken.
✓ Branch 161 (51→53) taken 6008 times.
✗ Branch 162 (22→23) not taken.
✓ Branch 163 (22→24) taken 389 times.
✗ Branch 164 (129→130) not taken.
✓ Branch 165 (129→131) taken 1014 times.
|
1268338 | assert(parentStack.top() == node); |
171 | 1268338 | parentStack.pop(); | |
172 | 1268338 | return node; | |
173 | } | ||
174 | |||
175 | ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const { | ||
176 |
83/166✓ Branch 0 (2→3) taken 94 times.
✗ Branch 1 (2→14) not taken.
✓ Branch 2 (2→3) taken 13021 times.
✗ Branch 3 (2→14) not taken.
✓ Branch 4 (2→3) taken 36372 times.
✗ Branch 5 (2→14) not taken.
✓ Branch 6 (2→3) taken 36373 times.
✗ Branch 7 (2→14) not taken.
✓ Branch 8 (2→3) taken 1 times.
✗ Branch 9 (2→14) not taken.
✓ Branch 10 (2→3) taken 27 times.
✗ Branch 11 (2→14) not taken.
✓ Branch 12 (2→3) taken 12 times.
✗ Branch 13 (2→14) not taken.
✓ Branch 14 (2→3) taken 211 times.
✗ Branch 15 (2→14) not taken.
✓ Branch 16 (2→3) taken 66 times.
✗ Branch 17 (2→14) not taken.
✓ Branch 18 (2→3) taken 12893 times.
✗ Branch 19 (2→14) not taken.
✓ Branch 20 (2→3) taken 14495 times.
✗ Branch 21 (2→14) not taken.
✓ Branch 22 (2→3) taken 14122 times.
✗ Branch 23 (2→14) not taken.
✓ Branch 24 (2→3) taken 71345 times.
✗ Branch 25 (2→14) not taken.
✓ Branch 26 (2→3) taken 90759 times.
✗ Branch 27 (2→14) not taken.
✓ Branch 28 (2→3) taken 72394 times.
✗ Branch 29 (2→14) not taken.
✓ Branch 30 (2→3) taken 65539 times.
✗ Branch 31 (2→14) not taken.
✓ Branch 32 (2→3) taken 64423 times.
✗ Branch 33 (2→14) not taken.
✓ Branch 34 (2→3) taken 61218 times.
✗ Branch 35 (2→14) not taken.
✓ Branch 36 (2→3) taken 61157 times.
✗ Branch 37 (2→14) not taken.
✓ Branch 38 (2→3) taken 58224 times.
✗ Branch 39 (2→14) not taken.
✓ Branch 40 (2→3) taken 53833 times.
✗ Branch 41 (2→14) not taken.
✓ Branch 42 (2→3) taken 53806 times.
✗ Branch 43 (2→14) not taken.
✓ Branch 44 (2→3) taken 53802 times.
✗ Branch 45 (2→14) not taken.
✓ Branch 46 (2→3) taken 53738 times.
✗ Branch 47 (2→14) not taken.
✓ Branch 48 (2→3) taken 53509 times.
✗ Branch 49 (2→14) not taken.
✓ Branch 50 (2→3) taken 52400 times.
✗ Branch 51 (2→14) not taken.
✓ Branch 52 (2→3) taken 51807 times.
✗ Branch 53 (2→14) not taken.
✓ Branch 54 (2→3) taken 57448 times.
✗ Branch 55 (2→14) not taken.
✓ Branch 56 (2→3) taken 1 times.
✗ Branch 57 (2→14) not taken.
✓ Branch 58 (2→3) taken 686 times.
✗ Branch 59 (2→14) not taken.
✓ Branch 60 (2→3) taken 33 times.
✗ Branch 61 (2→14) not taken.
✓ Branch 62 (2→3) taken 11 times.
✗ Branch 63 (2→14) not taken.
✓ Branch 64 (2→3) taken 199 times.
✗ Branch 65 (2→14) not taken.
✓ Branch 66 (2→3) taken 711 times.
✗ Branch 67 (2→14) not taken.
✓ Branch 68 (2→3) taken 1641 times.
✗ Branch 69 (2→14) not taken.
✓ Branch 70 (2→3) taken 634 times.
✗ Branch 71 (2→14) not taken.
✓ Branch 72 (2→3) taken 6 times.
✗ Branch 73 (2→14) not taken.
✓ Branch 74 (2→3) taken 179 times.
✗ Branch 75 (2→14) not taken.
✓ Branch 76 (2→3) taken 102 times.
✗ Branch 77 (2→14) not taken.
✓ Branch 78 (2→3) taken 7588 times.
✗ Branch 79 (2→14) not taken.
✓ Branch 80 (2→3) taken 70 times.
✗ Branch 81 (2→14) not taken.
✓ Branch 82 (2→3) taken 1186 times.
✗ Branch 83 (2→14) not taken.
✓ Branch 84 (2→3) taken 747 times.
✗ Branch 85 (2→14) not taken.
✓ Branch 86 (2→3) taken 16 times.
✗ Branch 87 (2→14) not taken.
✓ Branch 88 (2→3) taken 436 times.
✗ Branch 89 (2→14) not taken.
✓ Branch 90 (2→3) taken 295 times.
✗ Branch 91 (2→14) not taken.
✓ Branch 92 (2→3) taken 28300 times.
✗ Branch 93 (2→14) not taken.
✓ Branch 94 (2→3) taken 23622 times.
✗ Branch 95 (2→14) not taken.
✓ Branch 96 (2→3) taken 10868 times.
✗ Branch 97 (2→14) not taken.
✓ Branch 98 (2→3) taken 15884 times.
✗ Branch 99 (2→14) not taken.
✓ Branch 100 (2→3) taken 188 times.
✗ Branch 101 (2→14) not taken.
✓ Branch 102 (2→3) taken 1272 times.
✗ Branch 103 (2→14) not taken.
✓ Branch 104 (2→3) taken 741 times.
✗ Branch 105 (2→14) not taken.
✓ Branch 106 (2→3) taken 66 times.
✗ Branch 107 (2→14) not taken.
✓ Branch 108 (2→3) taken 10178 times.
✗ Branch 109 (2→14) not taken.
✓ Branch 110 (2→3) taken 6694 times.
✗ Branch 111 (2→14) not taken.
✓ Branch 112 (2→3) taken 761 times.
✗ Branch 113 (2→14) not taken.
✓ Branch 114 (2→3) taken 4963 times.
✗ Branch 115 (2→14) not taken.
✓ Branch 116 (2→3) taken 16790 times.
✗ Branch 117 (2→14) not taken.
✓ Branch 118 (2→3) taken 27 times.
✗ Branch 119 (2→14) not taken.
✓ Branch 120 (2→3) taken 6 times.
✗ Branch 121 (2→14) not taken.
✓ Branch 122 (2→3) taken 53 times.
✗ Branch 123 (2→14) not taken.
✓ Branch 124 (2→3) taken 12 times.
✗ Branch 125 (2→14) not taken.
✓ Branch 126 (2→3) taken 171 times.
✗ Branch 127 (2→14) not taken.
✓ Branch 128 (2→3) taken 3401 times.
✗ Branch 129 (2→14) not taken.
✓ Branch 130 (2→3) taken 9 times.
✗ Branch 131 (2→14) not taken.
✓ Branch 132 (2→3) taken 576 times.
✗ Branch 133 (2→14) not taken.
✓ Branch 134 (2→3) taken 88 times.
✗ Branch 135 (2→14) not taken.
✓ Branch 136 (2→3) taken 1036 times.
✗ Branch 137 (2→14) not taken.
✓ Branch 138 (2→3) taken 2079 times.
✗ Branch 139 (2→14) not taken.
✓ Branch 140 (2→3) taken 476 times.
✗ Branch 141 (2→14) not taken.
✓ Branch 142 (2→3) taken 853 times.
✗ Branch 143 (2→14) not taken.
✓ Branch 144 (2→3) taken 765 times.
✗ Branch 145 (2→14) not taken.
✓ Branch 146 (2→3) taken 47 times.
✗ Branch 147 (2→14) not taken.
✓ Branch 148 (2→3) taken 761 times.
✗ Branch 149 (2→14) not taken.
✓ Branch 150 (2→3) taken 66 times.
✗ Branch 151 (2→14) not taken.
✓ Branch 152 (2→3) taken 82 times.
✗ Branch 153 (2→14) not taken.
✓ Branch 154 (2→3) taken 589 times.
✗ Branch 155 (2→14) not taken.
✓ Branch 156 (2→3) taken 8964 times.
✗ Branch 157 (2→14) not taken.
✓ Branch 158 (2→3) taken 2956 times.
✗ Branch 159 (2→14) not taken.
✓ Branch 160 (2→3) taken 6008 times.
✗ Branch 161 (2→14) not taken.
✓ Branch 162 (2→3) taken 393 times.
✗ Branch 163 (2→14) not taken.
✓ Branch 164 (2→3) taken 1019 times.
✗ Branch 165 (2→13) not taken.
|
1268394 | const size_t startIdx = ctx->start->getStartIndex(); |
177 |
166/332✓ Branch 0 (3→4) taken 94 times.
✗ Branch 1 (3→6) not taken.
✓ Branch 2 (4→5) taken 94 times.
✗ Branch 3 (4→14) not taken.
✓ Branch 4 (3→4) taken 13021 times.
✗ Branch 5 (3→6) not taken.
✓ Branch 6 (4→5) taken 13021 times.
✗ Branch 7 (4→14) not taken.
✓ Branch 8 (3→4) taken 36372 times.
✗ Branch 9 (3→6) not taken.
✓ Branch 10 (4→5) taken 36372 times.
✗ Branch 11 (4→14) not taken.
✓ Branch 12 (3→4) taken 36373 times.
✗ Branch 13 (3→6) not taken.
✓ Branch 14 (4→5) taken 36373 times.
✗ Branch 15 (4→14) not taken.
✓ Branch 16 (3→4) taken 1 times.
✗ Branch 17 (3→6) not taken.
✓ Branch 18 (4→5) taken 1 times.
✗ Branch 19 (4→14) not taken.
✓ Branch 20 (3→4) taken 27 times.
✗ Branch 21 (3→6) not taken.
✓ Branch 22 (4→5) taken 27 times.
✗ Branch 23 (4→14) not taken.
✓ Branch 24 (3→4) taken 12 times.
✗ Branch 25 (3→6) not taken.
✓ Branch 26 (4→5) taken 12 times.
✗ Branch 27 (4→14) not taken.
✓ Branch 28 (3→4) taken 211 times.
✗ Branch 29 (3→6) not taken.
✓ Branch 30 (4→5) taken 211 times.
✗ Branch 31 (4→14) not taken.
✓ Branch 32 (3→4) taken 66 times.
✗ Branch 33 (3→6) not taken.
✓ Branch 34 (4→5) taken 66 times.
✗ Branch 35 (4→14) not taken.
✓ Branch 36 (3→4) taken 12893 times.
✗ Branch 37 (3→6) not taken.
✓ Branch 38 (4→5) taken 12893 times.
✗ Branch 39 (4→14) not taken.
✓ Branch 40 (3→4) taken 14495 times.
✗ Branch 41 (3→6) not taken.
✓ Branch 42 (4→5) taken 14495 times.
✗ Branch 43 (4→14) not taken.
✓ Branch 44 (3→4) taken 14122 times.
✗ Branch 45 (3→6) not taken.
✓ Branch 46 (4→5) taken 14122 times.
✗ Branch 47 (4→14) not taken.
✓ Branch 48 (3→4) taken 71345 times.
✗ Branch 49 (3→6) not taken.
✓ Branch 50 (4→5) taken 71345 times.
✗ Branch 51 (4→14) not taken.
✓ Branch 52 (3→4) taken 90759 times.
✗ Branch 53 (3→6) not taken.
✓ Branch 54 (4→5) taken 90759 times.
✗ Branch 55 (4→14) not taken.
✓ Branch 56 (3→4) taken 72394 times.
✗ Branch 57 (3→6) not taken.
✓ Branch 58 (4→5) taken 72394 times.
✗ Branch 59 (4→14) not taken.
✓ Branch 60 (3→4) taken 65539 times.
✗ Branch 61 (3→6) not taken.
✓ Branch 62 (4→5) taken 65539 times.
✗ Branch 63 (4→14) not taken.
✓ Branch 64 (3→4) taken 64423 times.
✗ Branch 65 (3→6) not taken.
✓ Branch 66 (4→5) taken 64423 times.
✗ Branch 67 (4→14) not taken.
✓ Branch 68 (3→4) taken 61218 times.
✗ Branch 69 (3→6) not taken.
✓ Branch 70 (4→5) taken 61218 times.
✗ Branch 71 (4→14) not taken.
✓ Branch 72 (3→4) taken 61157 times.
✗ Branch 73 (3→6) not taken.
✓ Branch 74 (4→5) taken 61157 times.
✗ Branch 75 (4→14) not taken.
✓ Branch 76 (3→4) taken 58224 times.
✗ Branch 77 (3→6) not taken.
✓ Branch 78 (4→5) taken 58224 times.
✗ Branch 79 (4→14) not taken.
✓ Branch 80 (3→4) taken 53833 times.
✗ Branch 81 (3→6) not taken.
✓ Branch 82 (4→5) taken 53833 times.
✗ Branch 83 (4→14) not taken.
✓ Branch 84 (3→4) taken 53806 times.
✗ Branch 85 (3→6) not taken.
✓ Branch 86 (4→5) taken 53806 times.
✗ Branch 87 (4→14) not taken.
✓ Branch 88 (3→4) taken 53802 times.
✗ Branch 89 (3→6) not taken.
✓ Branch 90 (4→5) taken 53802 times.
✗ Branch 91 (4→14) not taken.
✓ Branch 92 (3→4) taken 53738 times.
✗ Branch 93 (3→6) not taken.
✓ Branch 94 (4→5) taken 53738 times.
✗ Branch 95 (4→14) not taken.
✓ Branch 96 (3→4) taken 53509 times.
✗ Branch 97 (3→6) not taken.
✓ Branch 98 (4→5) taken 53509 times.
✗ Branch 99 (4→14) not taken.
✓ Branch 100 (3→4) taken 52400 times.
✗ Branch 101 (3→6) not taken.
✓ Branch 102 (4→5) taken 52400 times.
✗ Branch 103 (4→14) not taken.
✓ Branch 104 (3→4) taken 51807 times.
✗ Branch 105 (3→6) not taken.
✓ Branch 106 (4→5) taken 51807 times.
✗ Branch 107 (4→14) not taken.
✓ Branch 108 (3→4) taken 57448 times.
✗ Branch 109 (3→6) not taken.
✓ Branch 110 (4→5) taken 57448 times.
✗ Branch 111 (4→14) not taken.
✓ Branch 112 (3→4) taken 1 times.
✗ Branch 113 (3→6) not taken.
✓ Branch 114 (4→5) taken 1 times.
✗ Branch 115 (4→14) not taken.
✓ Branch 116 (3→4) taken 686 times.
✗ Branch 117 (3→6) not taken.
✓ Branch 118 (4→5) taken 686 times.
✗ Branch 119 (4→14) not taken.
✓ Branch 120 (3→4) taken 33 times.
✗ Branch 121 (3→6) not taken.
✓ Branch 122 (4→5) taken 33 times.
✗ Branch 123 (4→14) not taken.
✓ Branch 124 (3→4) taken 11 times.
✗ Branch 125 (3→6) not taken.
✓ Branch 126 (4→5) taken 11 times.
✗ Branch 127 (4→14) not taken.
✓ Branch 128 (3→4) taken 199 times.
✗ Branch 129 (3→6) not taken.
✓ Branch 130 (4→5) taken 199 times.
✗ Branch 131 (4→14) not taken.
✓ Branch 132 (3→4) taken 711 times.
✗ Branch 133 (3→6) not taken.
✓ Branch 134 (4→5) taken 711 times.
✗ Branch 135 (4→14) not taken.
✓ Branch 136 (3→4) taken 1641 times.
✗ Branch 137 (3→6) not taken.
✓ Branch 138 (4→5) taken 1641 times.
✗ Branch 139 (4→14) not taken.
✓ Branch 140 (3→4) taken 634 times.
✗ Branch 141 (3→6) not taken.
✓ Branch 142 (4→5) taken 634 times.
✗ Branch 143 (4→14) not taken.
✓ Branch 144 (3→4) taken 6 times.
✗ Branch 145 (3→6) not taken.
✓ Branch 146 (4→5) taken 6 times.
✗ Branch 147 (4→14) not taken.
✓ Branch 148 (3→4) taken 179 times.
✗ Branch 149 (3→6) not taken.
✓ Branch 150 (4→5) taken 179 times.
✗ Branch 151 (4→14) not taken.
✓ Branch 152 (3→4) taken 102 times.
✗ Branch 153 (3→6) not taken.
✓ Branch 154 (4→5) taken 102 times.
✗ Branch 155 (4→14) not taken.
✓ Branch 156 (3→4) taken 7588 times.
✗ Branch 157 (3→6) not taken.
✓ Branch 158 (4→5) taken 7588 times.
✗ Branch 159 (4→14) not taken.
✓ Branch 160 (3→4) taken 70 times.
✗ Branch 161 (3→6) not taken.
✓ Branch 162 (4→5) taken 70 times.
✗ Branch 163 (4→14) not taken.
✓ Branch 164 (3→4) taken 1186 times.
✗ Branch 165 (3→6) not taken.
✓ Branch 166 (4→5) taken 1186 times.
✗ Branch 167 (4→14) not taken.
✓ Branch 168 (3→4) taken 747 times.
✗ Branch 169 (3→6) not taken.
✓ Branch 170 (4→5) taken 747 times.
✗ Branch 171 (4→14) not taken.
✓ Branch 172 (3→4) taken 16 times.
✗ Branch 173 (3→6) not taken.
✓ Branch 174 (4→5) taken 16 times.
✗ Branch 175 (4→14) not taken.
✓ Branch 176 (3→4) taken 436 times.
✗ Branch 177 (3→6) not taken.
✓ Branch 178 (4→5) taken 436 times.
✗ Branch 179 (4→14) not taken.
✓ Branch 180 (3→4) taken 295 times.
✗ Branch 181 (3→6) not taken.
✓ Branch 182 (4→5) taken 295 times.
✗ Branch 183 (4→14) not taken.
✓ Branch 184 (3→4) taken 28300 times.
✗ Branch 185 (3→6) not taken.
✓ Branch 186 (4→5) taken 28300 times.
✗ Branch 187 (4→14) not taken.
✓ Branch 188 (3→4) taken 23622 times.
✗ Branch 189 (3→6) not taken.
✓ Branch 190 (4→5) taken 23622 times.
✗ Branch 191 (4→14) not taken.
✓ Branch 192 (3→4) taken 10868 times.
✗ Branch 193 (3→6) not taken.
✓ Branch 194 (4→5) taken 10868 times.
✗ Branch 195 (4→14) not taken.
✓ Branch 196 (3→4) taken 15884 times.
✗ Branch 197 (3→6) not taken.
✓ Branch 198 (4→5) taken 15884 times.
✗ Branch 199 (4→14) not taken.
✓ Branch 200 (3→4) taken 188 times.
✗ Branch 201 (3→6) not taken.
✓ Branch 202 (4→5) taken 188 times.
✗ Branch 203 (4→14) not taken.
✓ Branch 204 (3→4) taken 1272 times.
✗ Branch 205 (3→6) not taken.
✓ Branch 206 (4→5) taken 1272 times.
✗ Branch 207 (4→14) not taken.
✓ Branch 208 (3→4) taken 741 times.
✗ Branch 209 (3→6) not taken.
✓ Branch 210 (4→5) taken 741 times.
✗ Branch 211 (4→14) not taken.
✓ Branch 212 (3→4) taken 66 times.
✗ Branch 213 (3→6) not taken.
✓ Branch 214 (4→5) taken 66 times.
✗ Branch 215 (4→14) not taken.
✓ Branch 216 (3→4) taken 10178 times.
✗ Branch 217 (3→6) not taken.
✓ Branch 218 (4→5) taken 10178 times.
✗ Branch 219 (4→14) not taken.
✓ Branch 220 (3→4) taken 6694 times.
✗ Branch 221 (3→6) not taken.
✓ Branch 222 (4→5) taken 6694 times.
✗ Branch 223 (4→14) not taken.
✓ Branch 224 (3→4) taken 761 times.
✗ Branch 225 (3→6) not taken.
✓ Branch 226 (4→5) taken 761 times.
✗ Branch 227 (4→14) not taken.
✓ Branch 228 (3→4) taken 4963 times.
✗ Branch 229 (3→6) not taken.
✓ Branch 230 (4→5) taken 4963 times.
✗ Branch 231 (4→14) not taken.
✓ Branch 232 (3→4) taken 16790 times.
✗ Branch 233 (3→6) not taken.
✓ Branch 234 (4→5) taken 16790 times.
✗ Branch 235 (4→14) not taken.
✓ Branch 236 (3→4) taken 27 times.
✗ Branch 237 (3→6) not taken.
✓ Branch 238 (4→5) taken 27 times.
✗ Branch 239 (4→14) not taken.
✓ Branch 240 (3→4) taken 6 times.
✗ Branch 241 (3→6) not taken.
✓ Branch 242 (4→5) taken 6 times.
✗ Branch 243 (4→14) not taken.
✓ Branch 244 (3→4) taken 53 times.
✗ Branch 245 (3→6) not taken.
✓ Branch 246 (4→5) taken 53 times.
✗ Branch 247 (4→14) not taken.
✓ Branch 248 (3→4) taken 12 times.
✗ Branch 249 (3→6) not taken.
✓ Branch 250 (4→5) taken 12 times.
✗ Branch 251 (4→14) not taken.
✓ Branch 252 (3→4) taken 171 times.
✗ Branch 253 (3→6) not taken.
✓ Branch 254 (4→5) taken 171 times.
✗ Branch 255 (4→14) not taken.
✓ Branch 256 (3→4) taken 3401 times.
✗ Branch 257 (3→6) not taken.
✓ Branch 258 (4→5) taken 3401 times.
✗ Branch 259 (4→14) not taken.
✓ Branch 260 (3→4) taken 9 times.
✗ Branch 261 (3→6) not taken.
✓ Branch 262 (4→5) taken 9 times.
✗ Branch 263 (4→14) not taken.
✓ Branch 264 (3→4) taken 576 times.
✗ Branch 265 (3→6) not taken.
✓ Branch 266 (4→5) taken 576 times.
✗ Branch 267 (4→14) not taken.
✓ Branch 268 (3→4) taken 88 times.
✗ Branch 269 (3→6) not taken.
✓ Branch 270 (4→5) taken 88 times.
✗ Branch 271 (4→14) not taken.
✓ Branch 272 (3→4) taken 1036 times.
✗ Branch 273 (3→6) not taken.
✓ Branch 274 (4→5) taken 1036 times.
✗ Branch 275 (4→14) not taken.
✓ Branch 276 (3→4) taken 2079 times.
✗ Branch 277 (3→6) not taken.
✓ Branch 278 (4→5) taken 2079 times.
✗ Branch 279 (4→14) not taken.
✓ Branch 280 (3→4) taken 476 times.
✗ Branch 281 (3→6) not taken.
✓ Branch 282 (4→5) taken 476 times.
✗ Branch 283 (4→14) not taken.
✓ Branch 284 (3→4) taken 853 times.
✗ Branch 285 (3→6) not taken.
✓ Branch 286 (4→5) taken 853 times.
✗ Branch 287 (4→14) not taken.
✓ Branch 288 (3→4) taken 765 times.
✗ Branch 289 (3→6) not taken.
✓ Branch 290 (4→5) taken 765 times.
✗ Branch 291 (4→14) not taken.
✓ Branch 292 (3→4) taken 47 times.
✗ Branch 293 (3→6) not taken.
✓ Branch 294 (4→5) taken 47 times.
✗ Branch 295 (4→14) not taken.
✓ Branch 296 (3→4) taken 761 times.
✗ Branch 297 (3→6) not taken.
✓ Branch 298 (4→5) taken 761 times.
✗ Branch 299 (4→14) not taken.
✓ Branch 300 (3→4) taken 66 times.
✗ Branch 301 (3→6) not taken.
✓ Branch 302 (4→5) taken 66 times.
✗ Branch 303 (4→14) not taken.
✓ Branch 304 (3→4) taken 82 times.
✗ Branch 305 (3→6) not taken.
✓ Branch 306 (4→5) taken 82 times.
✗ Branch 307 (4→14) not taken.
✓ Branch 308 (3→4) taken 589 times.
✗ Branch 309 (3→6) not taken.
✓ Branch 310 (4→5) taken 589 times.
✗ Branch 311 (4→14) not taken.
✓ Branch 312 (3→4) taken 8964 times.
✗ Branch 313 (3→6) not taken.
✓ Branch 314 (4→5) taken 8964 times.
✗ Branch 315 (4→14) not taken.
✓ Branch 316 (3→4) taken 2956 times.
✗ Branch 317 (3→6) not taken.
✓ Branch 318 (4→5) taken 2956 times.
✗ Branch 319 (4→14) not taken.
✓ Branch 320 (3→4) taken 6008 times.
✗ Branch 321 (3→6) not taken.
✓ Branch 322 (4→5) taken 6008 times.
✗ Branch 323 (4→14) not taken.
✓ Branch 324 (3→4) taken 393 times.
✗ Branch 325 (3→6) not taken.
✓ Branch 326 (4→5) taken 393 times.
✗ Branch 327 (4→14) not taken.
✓ Branch 328 (3→4) taken 1019 times.
✗ Branch 329 (3→6) not taken.
✓ Branch 330 (4→5) taken 1019 times.
✗ Branch 331 (4→13) not taken.
|
1268394 | const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx; |
178 |
83/166✓ Branch 0 (7→8) taken 94 times.
✗ Branch 1 (7→14) not taken.
✓ Branch 2 (7→8) taken 13021 times.
✗ Branch 3 (7→14) not taken.
✓ Branch 4 (7→8) taken 36372 times.
✗ Branch 5 (7→14) not taken.
✓ Branch 6 (7→8) taken 36373 times.
✗ Branch 7 (7→14) not taken.
✓ Branch 8 (7→8) taken 1 times.
✗ Branch 9 (7→14) not taken.
✓ Branch 10 (7→8) taken 27 times.
✗ Branch 11 (7→14) not taken.
✓ Branch 12 (7→8) taken 12 times.
✗ Branch 13 (7→14) not taken.
✓ Branch 14 (7→8) taken 211 times.
✗ Branch 15 (7→14) not taken.
✓ Branch 16 (7→8) taken 66 times.
✗ Branch 17 (7→14) not taken.
✓ Branch 18 (7→8) taken 12893 times.
✗ Branch 19 (7→14) not taken.
✓ Branch 20 (7→8) taken 14495 times.
✗ Branch 21 (7→14) not taken.
✓ Branch 22 (7→8) taken 14122 times.
✗ Branch 23 (7→14) not taken.
✓ Branch 24 (7→8) taken 71345 times.
✗ Branch 25 (7→14) not taken.
✓ Branch 26 (7→8) taken 90759 times.
✗ Branch 27 (7→14) not taken.
✓ Branch 28 (7→8) taken 72394 times.
✗ Branch 29 (7→14) not taken.
✓ Branch 30 (7→8) taken 65539 times.
✗ Branch 31 (7→14) not taken.
✓ Branch 32 (7→8) taken 64423 times.
✗ Branch 33 (7→14) not taken.
✓ Branch 34 (7→8) taken 61218 times.
✗ Branch 35 (7→14) not taken.
✓ Branch 36 (7→8) taken 61157 times.
✗ Branch 37 (7→14) not taken.
✓ Branch 38 (7→8) taken 58224 times.
✗ Branch 39 (7→14) not taken.
✓ Branch 40 (7→8) taken 53833 times.
✗ Branch 41 (7→14) not taken.
✓ Branch 42 (7→8) taken 53806 times.
✗ Branch 43 (7→14) not taken.
✓ Branch 44 (7→8) taken 53802 times.
✗ Branch 45 (7→14) not taken.
✓ Branch 46 (7→8) taken 53738 times.
✗ Branch 47 (7→14) not taken.
✓ Branch 48 (7→8) taken 53509 times.
✗ Branch 49 (7→14) not taken.
✓ Branch 50 (7→8) taken 52400 times.
✗ Branch 51 (7→14) not taken.
✓ Branch 52 (7→8) taken 51807 times.
✗ Branch 53 (7→14) not taken.
✓ Branch 54 (7→8) taken 57448 times.
✗ Branch 55 (7→14) not taken.
✓ Branch 56 (7→8) taken 1 times.
✗ Branch 57 (7→14) not taken.
✓ Branch 58 (7→8) taken 686 times.
✗ Branch 59 (7→14) not taken.
✓ Branch 60 (7→8) taken 33 times.
✗ Branch 61 (7→14) not taken.
✓ Branch 62 (7→8) taken 11 times.
✗ Branch 63 (7→14) not taken.
✓ Branch 64 (7→8) taken 199 times.
✗ Branch 65 (7→14) not taken.
✓ Branch 66 (7→8) taken 711 times.
✗ Branch 67 (7→14) not taken.
✓ Branch 68 (7→8) taken 1641 times.
✗ Branch 69 (7→14) not taken.
✓ Branch 70 (7→8) taken 634 times.
✗ Branch 71 (7→14) not taken.
✓ Branch 72 (7→8) taken 6 times.
✗ Branch 73 (7→14) not taken.
✓ Branch 74 (7→8) taken 179 times.
✗ Branch 75 (7→14) not taken.
✓ Branch 76 (7→8) taken 102 times.
✗ Branch 77 (7→14) not taken.
✓ Branch 78 (7→8) taken 7588 times.
✗ Branch 79 (7→14) not taken.
✓ Branch 80 (7→8) taken 70 times.
✗ Branch 81 (7→14) not taken.
✓ Branch 82 (7→8) taken 1186 times.
✗ Branch 83 (7→14) not taken.
✓ Branch 84 (7→8) taken 747 times.
✗ Branch 85 (7→14) not taken.
✓ Branch 86 (7→8) taken 16 times.
✗ Branch 87 (7→14) not taken.
✓ Branch 88 (7→8) taken 436 times.
✗ Branch 89 (7→14) not taken.
✓ Branch 90 (7→8) taken 295 times.
✗ Branch 91 (7→14) not taken.
✓ Branch 92 (7→8) taken 28300 times.
✗ Branch 93 (7→14) not taken.
✓ Branch 94 (7→8) taken 23622 times.
✗ Branch 95 (7→14) not taken.
✓ Branch 96 (7→8) taken 10868 times.
✗ Branch 97 (7→14) not taken.
✓ Branch 98 (7→8) taken 15884 times.
✗ Branch 99 (7→14) not taken.
✓ Branch 100 (7→8) taken 188 times.
✗ Branch 101 (7→14) not taken.
✓ Branch 102 (7→8) taken 1272 times.
✗ Branch 103 (7→14) not taken.
✓ Branch 104 (7→8) taken 741 times.
✗ Branch 105 (7→14) not taken.
✓ Branch 106 (7→8) taken 66 times.
✗ Branch 107 (7→14) not taken.
✓ Branch 108 (7→8) taken 10178 times.
✗ Branch 109 (7→14) not taken.
✓ Branch 110 (7→8) taken 6694 times.
✗ Branch 111 (7→14) not taken.
✓ Branch 112 (7→8) taken 761 times.
✗ Branch 113 (7→14) not taken.
✓ Branch 114 (7→8) taken 4963 times.
✗ Branch 115 (7→14) not taken.
✓ Branch 116 (7→8) taken 16790 times.
✗ Branch 117 (7→14) not taken.
✓ Branch 118 (7→8) taken 27 times.
✗ Branch 119 (7→14) not taken.
✓ Branch 120 (7→8) taken 6 times.
✗ Branch 121 (7→14) not taken.
✓ Branch 122 (7→8) taken 53 times.
✗ Branch 123 (7→14) not taken.
✓ Branch 124 (7→8) taken 12 times.
✗ Branch 125 (7→14) not taken.
✓ Branch 126 (7→8) taken 171 times.
✗ Branch 127 (7→14) not taken.
✓ Branch 128 (7→8) taken 3401 times.
✗ Branch 129 (7→14) not taken.
✓ Branch 130 (7→8) taken 9 times.
✗ Branch 131 (7→14) not taken.
✓ Branch 132 (7→8) taken 576 times.
✗ Branch 133 (7→14) not taken.
✓ Branch 134 (7→8) taken 88 times.
✗ Branch 135 (7→14) not taken.
✓ Branch 136 (7→8) taken 1036 times.
✗ Branch 137 (7→14) not taken.
✓ Branch 138 (7→8) taken 2079 times.
✗ Branch 139 (7→14) not taken.
✓ Branch 140 (7→8) taken 476 times.
✗ Branch 141 (7→14) not taken.
✓ Branch 142 (7→8) taken 853 times.
✗ Branch 143 (7→14) not taken.
✓ Branch 144 (7→8) taken 765 times.
✗ Branch 145 (7→14) not taken.
✓ Branch 146 (7→8) taken 47 times.
✗ Branch 147 (7→14) not taken.
✓ Branch 148 (7→8) taken 761 times.
✗ Branch 149 (7→14) not taken.
✓ Branch 150 (7→8) taken 66 times.
✗ Branch 151 (7→14) not taken.
✓ Branch 152 (7→8) taken 82 times.
✗ Branch 153 (7→14) not taken.
✓ Branch 154 (7→8) taken 589 times.
✗ Branch 155 (7→14) not taken.
✓ Branch 156 (7→8) taken 8964 times.
✗ Branch 157 (7→14) not taken.
✓ Branch 158 (7→8) taken 2956 times.
✗ Branch 159 (7→14) not taken.
✓ Branch 160 (7→8) taken 6008 times.
✗ Branch 161 (7→14) not taken.
✓ Branch 162 (7→8) taken 393 times.
✗ Branch 163 (7→14) not taken.
✓ Branch 164 (7→8) taken 1019 times.
✗ Branch 165 (7→13) not taken.
|
1268394 | return {ctx->start, startIdx, stopIdx, sourceFile}; |
179 | } | ||
180 | |||
181 | int32_t parseInt(TerminalNode *terminal); | ||
182 | int16_t parseShort(TerminalNode *terminal); | ||
183 | int64_t parseLong(TerminalNode *terminal); | ||
184 | int8_t parseChar(TerminalNode *terminal) const; | ||
185 | static std::string parseString(std::string input); | ||
186 | template <typename T> T parseNumeric(TerminalNode *terminal, const NumericParserCallback<T> &cb); | ||
187 | static void replaceEscapeChars(std::string &input); | ||
188 | std::string getIdentifier(TerminalNode *terminal) const; | ||
189 | }; | ||
190 | |||
191 | } // namespace spice::compiler | ||
192 |