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 type defs | ||
31 | using TerminalNode = antlr4::tree::TerminalNode; | ||
32 | using ParserRuleContext = antlr4::ParserRuleContext; | ||
33 | template <typename T> using NumericParserCallback = std::function<T(const std::string &, short, bool)>; | ||
34 | |||
35 | public: | ||
36 | // Constructors | ||
37 | ASTBuilder(GlobalResourceManager &resourceManager, SourceFile *sourceFile, antlr4::ANTLRInputStream *inputStream); | ||
38 | |||
39 | // Public methods | ||
40 | std::any visitEntry(SpiceParser::EntryContext *ctx) override; | ||
41 | std::any visitMainFunctionDef(SpiceParser::MainFunctionDefContext *ctx) override; | ||
42 | std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override; | ||
43 | std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override; | ||
44 | std::any visitFctName(SpiceParser::FctNameContext *ctx) override; | ||
45 | std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override; | ||
46 | std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override; | ||
47 | std::any visitStructDef(SpiceParser::StructDefContext *ctx) override; | ||
48 | std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override; | ||
49 | std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override; | ||
50 | std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override; | ||
51 | std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override; | ||
52 | std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override; | ||
53 | std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override; | ||
54 | std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override; | ||
55 | std::any visitForHead(SpiceParser::ForHeadContext *ctx) override; | ||
56 | std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override; | ||
57 | std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override; | ||
58 | std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override; | ||
59 | std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override; | ||
60 | std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override; | ||
61 | std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override; | ||
62 | std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override; | ||
63 | std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override; | ||
64 | std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override; | ||
65 | std::any visitAnonymousBlockStmt(SpiceParser::AnonymousBlockStmtContext *ctx) override; | ||
66 | std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override; | ||
67 | std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override; | ||
68 | std::any visitTypeLstWithEllipsis(SpiceParser::TypeLstWithEllipsisContext *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 visitTypeIdCall(SpiceParser::TypeIdCallContext *ctx) override; | ||
97 | std::any visitLenCall(SpiceParser::LenCallContext *ctx) override; | ||
98 | std::any visitPanicCall(SpiceParser::PanicCallContext *ctx) override; | ||
99 | std::any visitSysCall(SpiceParser::SysCallContext *ctx) override; | ||
100 | std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override; | ||
101 | std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override; | ||
102 | std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override; | ||
103 | std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override; | ||
104 | std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override; | ||
105 | std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override; | ||
106 | std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override; | ||
107 | std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override; | ||
108 | std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override; | ||
109 | std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override; | ||
110 | std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override; | ||
111 | std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override; | ||
112 | std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override; | ||
113 | std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override; | ||
114 | std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override; | ||
115 | std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override; | ||
116 | std::any visitValue(SpiceParser::ValueContext *ctx) override; | ||
117 | std::any visitFctCall(SpiceParser::FctCallContext *ctx) override; | ||
118 | std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override; | ||
119 | std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override; | ||
120 | std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override; | ||
121 | std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override; | ||
122 | std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override; | ||
123 | std::any visitConstant(SpiceParser::ConstantContext *ctx) override; | ||
124 | std::any visitDataType(SpiceParser::DataTypeContext *ctx) override; | ||
125 | std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override; | ||
126 | std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override; | ||
127 | std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override; | ||
128 | std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override; | ||
129 | std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override; | ||
130 | |||
131 | private: | ||
132 | // Members | ||
133 | antlr4::ANTLRInputStream *inputStream; | ||
134 | std::stack<ASTNode *> parentStack; | ||
135 | |||
136 | // Private methods | ||
137 | template <typename SrcTy, typename TgtTy> | ||
138 | 719442 | void fetchChildrenIntoVector(std::vector<TgtTy> &tgt, const std::vector<SrcTy> &src) | |
139 | requires(std::is_pointer_v<SrcTy> && std::is_pointer_v<TgtTy>) | ||
140 | { | ||
141 | 719442 | tgt.reserve(src.size()); | |
142 |
2/2✓ Branch 0 (13→6) taken 753906 times.
✓ Branch 1 (13→14) taken 719421 times.
|
1473327 | for (SrcTy shiftExpr : src) |
143 |
4/6✓ Branch 0 (7→8) taken 753885 times.
✓ Branch 1 (7→17) taken 21 times.
✓ Branch 2 (8→9) taken 753885 times.
✗ Branch 3 (8→15) not taken.
✓ Branch 4 (9→10) taken 753885 times.
✗ Branch 5 (9→15) not taken.
|
753906 | tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr))); |
144 | 719421 | } | |
145 | |||
146 | template <typename T> | ||
147 | 1469339 | T *createNode(const ParserRuleContext *ctx) | |
148 | requires std::is_base_of_v<ASTNode, T> | ||
149 | { | ||
150 | // Create the new node | ||
151 |
1/2✓ Branch 0 (9→10) taken 1469339 times.
✗ Branch 1 (9→14) not taken.
|
1469339 | T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx)); |
152 | if constexpr (!std::is_same_v<T, EntryNode>) | ||
153 | 1468275 | node->parent = parentStack.top(); | |
154 | // This node is the parent for its children | ||
155 |
1/2✓ Branch 0 (11→12) taken 1469339 times.
✗ Branch 1 (11→15) not taken.
|
1469339 | parentStack.push(node); |
156 | 1469339 | return node; | |
157 | } | ||
158 | |||
159 | template <typename T> | ||
160 | ALWAYS_INLINE T *resumeForExpansion() const | ||
161 | requires std::is_base_of_v<ASTNode, T> | ||
162 | { | ||
163 |
4/8✓ Branch 0 (3→4) taken 1559 times.
✗ Branch 1 (3→5) not taken.
✓ Branch 2 (3→4) taken 6616 times.
✗ Branch 3 (3→5) not taken.
✓ Branch 4 (3→4) taken 100 times.
✗ Branch 5 (3→5) not taken.
✓ Branch 6 (3→4) taken 1237 times.
✗ Branch 7 (3→5) not taken.
|
19024 | return spice_pointer_cast<T *>(parentStack.top()); |
164 | } | ||
165 | |||
166 | template <typename T> | ||
167 | ALWAYS_INLINE T *concludeNode(T *node) | ||
168 | requires std::is_base_of_v<ASTNode, T> | ||
169 | { | ||
170 | // This node is no longer the parent for its children | ||
171 |
85/170✗ Branch 0 (19→20) not taken.
✓ Branch 1 (19→21) taken 82 times.
✗ Branch 2 (40→41) not taken.
✓ Branch 3 (40→42) taken 14671 times.
✗ Branch 4 (46→47) not taken.
✓ Branch 5 (46→48) taken 41529 times.
✗ Branch 6 (63→64) not taken.
✓ Branch 7 (63→65) taken 41529 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 213 times.
✗ Branch 16 (11→12) not taken.
✓ Branch 17 (11→13) taken 70 times.
✗ Branch 18 (53→54) not taken.
✓ Branch 19 (53→55) taken 14347 times.
✗ Branch 20 (48→49) not taken.
✓ Branch 21 (48→50) taken 16509 times.
✗ Branch 22 (54→55) not taken.
✓ Branch 23 (54→56) taken 15841 times.
✗ Branch 24 (80→81) not taken.
✓ Branch 25 (80→82) taken 80716 times.
✗ Branch 26 (38→39) not taken.
✓ Branch 27 (38→40) taken 102330 times.
✗ Branch 28 (40→41) not taken.
✓ Branch 29 (40→42) taken 81833 times.
✗ Branch 30 (20→21) not taken.
✓ Branch 31 (20→22) taken 76549 times.
✗ Branch 32 (34→35) not taken.
✓ Branch 33 (34→36) taken 75348 times.
✗ Branch 34 (29→30) not taken.
✓ Branch 35 (29→31) taken 71621 times.
✗ Branch 36 (37→38) not taken.
✓ Branch 37 (37→39) taken 71506 times.
✗ Branch 38 (19→20) not taken.
✓ Branch 39 (19→21) taken 68022 times.
✗ Branch 40 (13→14) not taken.
✓ Branch 41 (13→15) taken 63426 times.
✗ Branch 42 (7→8) not taken.
✓ Branch 43 (7→9) taken 63402 times.
✗ Branch 44 (7→8) not taken.
✓ Branch 45 (7→9) taken 63393 times.
✗ Branch 46 (7→8) not taken.
✓ Branch 47 (7→9) taken 63325 times.
✗ Branch 48 (7→8) not taken.
✓ Branch 49 (7→9) taken 63086 times.
✗ Branch 50 (7→8) not taken.
✓ Branch 51 (7→9) taken 61945 times.
✗ Branch 52 (30→31) not taken.
✓ Branch 53 (30→32) taken 61112 times.
✗ Branch 54 (26→27) not taken.
✓ Branch 55 (26→28) taken 67552 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 805 times.
✗ Branch 60 (8→9) not taken.
✓ Branch 61 (8→10) taken 119 times.
✗ Branch 62 (16→17) not taken.
✓ Branch 63 (16→18) taken 2 times.
✗ Branch 64 (16→17) not taken.
✓ Branch 65 (16→18) taken 11 times.
✗ Branch 66 (16→17) not taken.
✓ Branch 67 (16→18) taken 217 times.
✗ Branch 68 (15→16) not taken.
✓ Branch 69 (15→17) taken 799 times.
✗ Branch 70 (54→55) not taken.
✓ Branch 71 (54→56) taken 1954 times.
✗ Branch 72 (16→17) not taken.
✓ Branch 73 (16→18) taken 687 times.
✗ Branch 74 (6→7) not taken.
✓ Branch 75 (6→8) taken 6 times.
✗ Branch 76 (13→14) not taken.
✓ Branch 77 (13→15) taken 183 times.
✗ Branch 78 (13→14) not taken.
✓ Branch 79 (13→15) taken 105 times.
✗ Branch 80 (11→12) not taken.
✓ Branch 81 (11→13) taken 8541 times.
✗ Branch 82 (50→51) not taken.
✓ Branch 83 (50→52) taken 70 times.
✗ Branch 84 (52→53) not taken.
✓ Branch 85 (52→54) taken 1176 times.
✗ Branch 86 (7→8) not taken.
✓ Branch 87 (7→9) taken 733 times.
✗ Branch 88 (14→15) not taken.
✓ Branch 89 (14→16) taken 16 times.
✗ Branch 90 (8→9) not taken.
✓ Branch 91 (8→10) taken 413 times.
✗ Branch 92 (14→15) not taken.
✓ Branch 93 (14→16) taken 304 times.
✗ Branch 94 (34→35) not taken.
✓ Branch 95 (34→36) taken 32671 times.
✗ Branch 96 (26→27) not taken.
✓ Branch 97 (26→28) taken 26924 times.
✗ Branch 98 (8→9) not taken.
✓ Branch 99 (8→10) taken 12455 times.
✗ Branch 100 (19→20) not taken.
✓ Branch 101 (19→21) taken 18208 times.
✗ Branch 102 (64→65) not taken.
✓ Branch 103 (64→66) taken 194 times.
✗ Branch 104 (20→21) not taken.
✓ Branch 105 (20→22) taken 1321 times.
✗ Branch 106 (13→14) not taken.
✓ Branch 107 (13→15) taken 742 times.
✗ Branch 108 (7→8) not taken.
✓ Branch 109 (7→9) taken 66 times.
✗ Branch 110 (9→10) not taken.
✓ Branch 111 (9→11) taken 11321 times.
✗ Branch 112 (13→14) not taken.
✓ Branch 113 (13→15) taken 8024 times.
✗ Branch 114 (7→8) not taken.
✓ Branch 115 (7→9) taken 815 times.
✗ Branch 116 (9→10) not taken.
✓ Branch 117 (9→11) taken 882 times.
✗ Branch 118 (7→8) not taken.
✓ Branch 119 (7→9) taken 5598 times.
✗ Branch 120 (107→108) not taken.
✓ Branch 121 (107→109) taken 19078 times.
✗ Branch 122 (8→9) not taken.
✓ Branch 123 (8→10) taken 28 times.
✗ Branch 124 (8→9) not taken.
✓ Branch 125 (8→10) taken 6 times.
✗ Branch 126 (11→12) not taken.
✓ Branch 127 (11→13) taken 53 times.
✗ Branch 128 (18→19) not taken.
✓ Branch 129 (18→20) taken 12 times.
✗ Branch 130 (16→17) not taken.
✓ Branch 131 (16→18) taken 176 times.
✗ Branch 132 (19→20) not taken.
✓ Branch 133 (19→21) taken 3655 times.
✗ Branch 134 (12→13) not taken.
✓ Branch 135 (12→14) taken 9 times.
✗ Branch 136 (12→13) not taken.
✓ Branch 137 (12→14) taken 690 times.
✗ Branch 138 (11→12) not taken.
✓ Branch 139 (11→13) taken 100 times.
✗ Branch 140 (11→12) not taken.
✓ Branch 141 (11→13) taken 1237 times.
✗ Branch 142 (8→9) not taken.
✓ Branch 143 (8→10) taken 2316 times.
✗ Branch 144 (17→18) not taken.
✓ Branch 145 (17→19) taken 526 times.
✗ Branch 146 (40→41) not taken.
✓ Branch 147 (40→42) taken 922 times.
✗ Branch 148 (19→20) not taken.
✓ Branch 149 (19→21) taken 1161 times.
✗ Branch 150 (24→25) not taken.
✓ Branch 151 (24→26) taken 67 times.
✗ Branch 152 (12→13) not taken.
✓ Branch 153 (12→14) taken 815 times.
✗ Branch 154 (26→27) not taken.
✓ Branch 155 (26→28) taken 66 times.
✗ Branch 156 (68→69) not taken.
✓ Branch 157 (68→70) taken 85 times.
✗ Branch 158 (78→79) not taken.
✓ Branch 159 (78→80) taken 614 times.
✗ Branch 160 (30→31) not taken.
✓ Branch 161 (30→32) taken 10425 times.
✗ Branch 162 (47→48) not taken.
✓ Branch 163 (47→49) taken 3442 times.
✗ Branch 164 (51→52) not taken.
✓ Branch 165 (51→53) taken 6983 times.
✗ Branch 166 (22→23) not taken.
✓ Branch 167 (22→24) taken 397 times.
✗ Branch 168 (129→130) not taken.
✓ Branch 169 (129→131) taken 1058 times.
|
1469281 | assert(parentStack.top() == node); |
172 | 1469281 | parentStack.pop(); | |
173 | 1469281 | return node; | |
174 | } | ||
175 | |||
176 | ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const { | ||
177 |
85/170✓ Branch 0 (2→3) taken 82 times.
✗ Branch 1 (2→14) not taken.
✓ Branch 2 (2→3) taken 14671 times.
✗ Branch 3 (2→14) not taken.
✓ Branch 4 (2→3) taken 41529 times.
✗ Branch 5 (2→14) not taken.
✓ Branch 6 (2→3) taken 41530 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 213 times.
✗ Branch 15 (2→14) not taken.
✓ Branch 16 (2→3) taken 70 times.
✗ Branch 17 (2→14) not taken.
✓ Branch 18 (2→3) taken 14347 times.
✗ Branch 19 (2→14) not taken.
✓ Branch 20 (2→3) taken 16511 times.
✗ Branch 21 (2→14) not taken.
✓ Branch 22 (2→3) taken 15841 times.
✗ Branch 23 (2→14) not taken.
✓ Branch 24 (2→3) taken 80718 times.
✗ Branch 25 (2→14) not taken.
✓ Branch 26 (2→3) taken 102332 times.
✗ Branch 27 (2→14) not taken.
✓ Branch 28 (2→3) taken 81835 times.
✗ Branch 29 (2→14) not taken.
✓ Branch 30 (2→3) taken 76551 times.
✗ Branch 31 (2→14) not taken.
✓ Branch 32 (2→3) taken 75350 times.
✗ Branch 33 (2→14) not taken.
✓ Branch 34 (2→3) taken 71623 times.
✗ Branch 35 (2→14) not taken.
✓ Branch 36 (2→3) taken 71508 times.
✗ Branch 37 (2→14) not taken.
✓ Branch 38 (2→3) taken 68024 times.
✗ Branch 39 (2→14) not taken.
✓ Branch 40 (2→3) taken 63428 times.
✗ Branch 41 (2→14) not taken.
✓ Branch 42 (2→3) taken 63404 times.
✗ Branch 43 (2→14) not taken.
✓ Branch 44 (2→3) taken 63395 times.
✗ Branch 45 (2→14) not taken.
✓ Branch 46 (2→3) taken 63327 times.
✗ Branch 47 (2→14) not taken.
✓ Branch 48 (2→3) taken 63088 times.
✗ Branch 49 (2→14) not taken.
✓ Branch 50 (2→3) taken 61947 times.
✗ Branch 51 (2→14) not taken.
✓ Branch 52 (2→3) taken 61114 times.
✗ Branch 53 (2→14) not taken.
✓ Branch 54 (2→3) taken 67554 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 805 times.
✗ Branch 59 (2→14) not taken.
✓ Branch 60 (2→3) taken 119 times.
✗ Branch 61 (2→14) not taken.
✓ Branch 62 (2→3) taken 2 times.
✗ Branch 63 (2→14) not taken.
✓ Branch 64 (2→3) taken 11 times.
✗ Branch 65 (2→14) not taken.
✓ Branch 66 (2→3) taken 217 times.
✗ Branch 67 (2→14) not taken.
✓ Branch 68 (2→3) taken 799 times.
✗ Branch 69 (2→14) not taken.
✓ Branch 70 (2→3) taken 1954 times.
✗ Branch 71 (2→14) not taken.
✓ Branch 72 (2→3) taken 687 times.
✗ Branch 73 (2→14) not taken.
✓ Branch 74 (2→3) taken 6 times.
✗ Branch 75 (2→14) not taken.
✓ Branch 76 (2→3) taken 183 times.
✗ Branch 77 (2→14) not taken.
✓ Branch 78 (2→3) taken 105 times.
✗ Branch 79 (2→14) not taken.
✓ Branch 80 (2→3) taken 8541 times.
✗ Branch 81 (2→14) not taken.
✓ Branch 82 (2→3) taken 70 times.
✗ Branch 83 (2→14) not taken.
✓ Branch 84 (2→3) taken 1177 times.
✗ Branch 85 (2→14) not taken.
✓ Branch 86 (2→3) taken 734 times.
✗ Branch 87 (2→14) not taken.
✓ Branch 88 (2→3) taken 16 times.
✗ Branch 89 (2→14) not taken.
✓ Branch 90 (2→3) taken 413 times.
✗ Branch 91 (2→14) not taken.
✓ Branch 92 (2→3) taken 305 times.
✗ Branch 93 (2→14) not taken.
✓ Branch 94 (2→3) taken 32671 times.
✗ Branch 95 (2→14) not taken.
✓ Branch 96 (2→3) taken 26925 times.
✗ Branch 97 (2→14) not taken.
✓ Branch 98 (2→3) taken 12455 times.
✗ Branch 99 (2→14) not taken.
✓ Branch 100 (2→3) taken 18212 times.
✗ Branch 101 (2→14) not taken.
✓ Branch 102 (2→3) taken 194 times.
✗ Branch 103 (2→14) not taken.
✓ Branch 104 (2→3) taken 1321 times.
✗ Branch 105 (2→14) not taken.
✓ Branch 106 (2→3) taken 742 times.
✗ Branch 107 (2→14) not taken.
✓ Branch 108 (2→3) taken 66 times.
✗ Branch 109 (2→14) not taken.
✓ Branch 110 (2→3) taken 11321 times.
✗ Branch 111 (2→14) not taken.
✓ Branch 112 (2→3) taken 8024 times.
✗ Branch 113 (2→14) not taken.
✓ Branch 114 (2→3) taken 815 times.
✗ Branch 115 (2→14) not taken.
✓ Branch 116 (2→3) taken 882 times.
✗ Branch 117 (2→14) not taken.
✓ Branch 118 (2→3) taken 5598 times.
✗ Branch 119 (2→14) not taken.
✓ Branch 120 (2→3) taken 19082 times.
✗ Branch 121 (2→14) not taken.
✓ Branch 122 (2→3) taken 28 times.
✗ Branch 123 (2→14) not taken.
✓ Branch 124 (2→3) taken 6 times.
✗ Branch 125 (2→14) not taken.
✓ Branch 126 (2→3) taken 53 times.
✗ Branch 127 (2→14) not taken.
✓ Branch 128 (2→3) taken 12 times.
✗ Branch 129 (2→14) not taken.
✓ Branch 130 (2→3) taken 176 times.
✗ Branch 131 (2→14) not taken.
✓ Branch 132 (2→3) taken 3655 times.
✗ Branch 133 (2→14) not taken.
✓ Branch 134 (2→3) taken 9 times.
✗ Branch 135 (2→14) not taken.
✓ Branch 136 (2→3) taken 690 times.
✗ Branch 137 (2→14) not taken.
✓ Branch 138 (2→3) taken 100 times.
✗ Branch 139 (2→14) not taken.
✓ Branch 140 (2→3) taken 1237 times.
✗ Branch 141 (2→14) not taken.
✓ Branch 142 (2→3) taken 2316 times.
✗ Branch 143 (2→14) not taken.
✓ Branch 144 (2→3) taken 526 times.
✗ Branch 145 (2→14) not taken.
✓ Branch 146 (2→3) taken 922 times.
✗ Branch 147 (2→14) not taken.
✓ Branch 148 (2→3) taken 1161 times.
✗ Branch 149 (2→14) not taken.
✓ Branch 150 (2→3) taken 67 times.
✗ Branch 151 (2→14) not taken.
✓ Branch 152 (2→3) taken 815 times.
✗ Branch 153 (2→14) not taken.
✓ Branch 154 (2→3) taken 66 times.
✗ Branch 155 (2→14) not taken.
✓ Branch 156 (2→3) taken 85 times.
✗ Branch 157 (2→14) not taken.
✓ Branch 158 (2→3) taken 615 times.
✗ Branch 159 (2→14) not taken.
✓ Branch 160 (2→3) taken 10425 times.
✗ Branch 161 (2→14) not taken.
✓ Branch 162 (2→3) taken 3442 times.
✗ Branch 163 (2→14) not taken.
✓ Branch 164 (2→3) taken 6983 times.
✗ Branch 165 (2→14) not taken.
✓ Branch 166 (2→3) taken 401 times.
✗ Branch 167 (2→14) not taken.
✓ Branch 168 (2→3) taken 1064 times.
✗ Branch 169 (2→13) not taken.
|
1469339 | const size_t startIdx = ctx->start->getStartIndex(); |
178 |
170/340✓ Branch 0 (3→4) taken 82 times.
✗ Branch 1 (3→6) not taken.
✓ Branch 2 (4→5) taken 82 times.
✗ Branch 3 (4→14) not taken.
✓ Branch 4 (3→4) taken 14671 times.
✗ Branch 5 (3→6) not taken.
✓ Branch 6 (4→5) taken 14671 times.
✗ Branch 7 (4→14) not taken.
✓ Branch 8 (3→4) taken 41529 times.
✗ Branch 9 (3→6) not taken.
✓ Branch 10 (4→5) taken 41529 times.
✗ Branch 11 (4→14) not taken.
✓ Branch 12 (3→4) taken 41530 times.
✗ Branch 13 (3→6) not taken.
✓ Branch 14 (4→5) taken 41530 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 213 times.
✗ Branch 29 (3→6) not taken.
✓ Branch 30 (4→5) taken 213 times.
✗ Branch 31 (4→14) not taken.
✓ Branch 32 (3→4) taken 70 times.
✗ Branch 33 (3→6) not taken.
✓ Branch 34 (4→5) taken 70 times.
✗ Branch 35 (4→14) not taken.
✓ Branch 36 (3→4) taken 14347 times.
✗ Branch 37 (3→6) not taken.
✓ Branch 38 (4→5) taken 14347 times.
✗ Branch 39 (4→14) not taken.
✓ Branch 40 (3→4) taken 16511 times.
✗ Branch 41 (3→6) not taken.
✓ Branch 42 (4→5) taken 16511 times.
✗ Branch 43 (4→14) not taken.
✓ Branch 44 (3→4) taken 15841 times.
✗ Branch 45 (3→6) not taken.
✓ Branch 46 (4→5) taken 15841 times.
✗ Branch 47 (4→14) not taken.
✓ Branch 48 (3→4) taken 80718 times.
✗ Branch 49 (3→6) not taken.
✓ Branch 50 (4→5) taken 80718 times.
✗ Branch 51 (4→14) not taken.
✓ Branch 52 (3→4) taken 102332 times.
✗ Branch 53 (3→6) not taken.
✓ Branch 54 (4→5) taken 102332 times.
✗ Branch 55 (4→14) not taken.
✓ Branch 56 (3→4) taken 81835 times.
✗ Branch 57 (3→6) not taken.
✓ Branch 58 (4→5) taken 81835 times.
✗ Branch 59 (4→14) not taken.
✓ Branch 60 (3→4) taken 76551 times.
✗ Branch 61 (3→6) not taken.
✓ Branch 62 (4→5) taken 76551 times.
✗ Branch 63 (4→14) not taken.
✓ Branch 64 (3→4) taken 75350 times.
✗ Branch 65 (3→6) not taken.
✓ Branch 66 (4→5) taken 75350 times.
✗ Branch 67 (4→14) not taken.
✓ Branch 68 (3→4) taken 71623 times.
✗ Branch 69 (3→6) not taken.
✓ Branch 70 (4→5) taken 71623 times.
✗ Branch 71 (4→14) not taken.
✓ Branch 72 (3→4) taken 71508 times.
✗ Branch 73 (3→6) not taken.
✓ Branch 74 (4→5) taken 71508 times.
✗ Branch 75 (4→14) not taken.
✓ Branch 76 (3→4) taken 68024 times.
✗ Branch 77 (3→6) not taken.
✓ Branch 78 (4→5) taken 68024 times.
✗ Branch 79 (4→14) not taken.
✓ Branch 80 (3→4) taken 63428 times.
✗ Branch 81 (3→6) not taken.
✓ Branch 82 (4→5) taken 63428 times.
✗ Branch 83 (4→14) not taken.
✓ Branch 84 (3→4) taken 63404 times.
✗ Branch 85 (3→6) not taken.
✓ Branch 86 (4→5) taken 63404 times.
✗ Branch 87 (4→14) not taken.
✓ Branch 88 (3→4) taken 63395 times.
✗ Branch 89 (3→6) not taken.
✓ Branch 90 (4→5) taken 63395 times.
✗ Branch 91 (4→14) not taken.
✓ Branch 92 (3→4) taken 63327 times.
✗ Branch 93 (3→6) not taken.
✓ Branch 94 (4→5) taken 63327 times.
✗ Branch 95 (4→14) not taken.
✓ Branch 96 (3→4) taken 63088 times.
✗ Branch 97 (3→6) not taken.
✓ Branch 98 (4→5) taken 63088 times.
✗ Branch 99 (4→14) not taken.
✓ Branch 100 (3→4) taken 61947 times.
✗ Branch 101 (3→6) not taken.
✓ Branch 102 (4→5) taken 61947 times.
✗ Branch 103 (4→14) not taken.
✓ Branch 104 (3→4) taken 61114 times.
✗ Branch 105 (3→6) not taken.
✓ Branch 106 (4→5) taken 61114 times.
✗ Branch 107 (4→14) not taken.
✓ Branch 108 (3→4) taken 67554 times.
✗ Branch 109 (3→6) not taken.
✓ Branch 110 (4→5) taken 67554 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 805 times.
✗ Branch 117 (3→6) not taken.
✓ Branch 118 (4→5) taken 805 times.
✗ Branch 119 (4→14) not taken.
✓ Branch 120 (3→4) taken 119 times.
✗ Branch 121 (3→6) not taken.
✓ Branch 122 (4→5) taken 119 times.
✗ Branch 123 (4→14) not taken.
✓ Branch 124 (3→4) taken 2 times.
✗ Branch 125 (3→6) not taken.
✓ Branch 126 (4→5) taken 2 times.
✗ Branch 127 (4→14) not taken.
✓ Branch 128 (3→4) taken 11 times.
✗ Branch 129 (3→6) not taken.
✓ Branch 130 (4→5) taken 11 times.
✗ Branch 131 (4→14) not taken.
✓ Branch 132 (3→4) taken 217 times.
✗ Branch 133 (3→6) not taken.
✓ Branch 134 (4→5) taken 217 times.
✗ Branch 135 (4→14) not taken.
✓ Branch 136 (3→4) taken 799 times.
✗ Branch 137 (3→6) not taken.
✓ Branch 138 (4→5) taken 799 times.
✗ Branch 139 (4→14) not taken.
✓ Branch 140 (3→4) taken 1954 times.
✗ Branch 141 (3→6) not taken.
✓ Branch 142 (4→5) taken 1954 times.
✗ Branch 143 (4→14) not taken.
✓ Branch 144 (3→4) taken 687 times.
✗ Branch 145 (3→6) not taken.
✓ Branch 146 (4→5) taken 687 times.
✗ Branch 147 (4→14) not taken.
✓ Branch 148 (3→4) taken 6 times.
✗ Branch 149 (3→6) not taken.
✓ Branch 150 (4→5) taken 6 times.
✗ Branch 151 (4→14) not taken.
✓ Branch 152 (3→4) taken 183 times.
✗ Branch 153 (3→6) not taken.
✓ Branch 154 (4→5) taken 183 times.
✗ Branch 155 (4→14) not taken.
✓ Branch 156 (3→4) taken 105 times.
✗ Branch 157 (3→6) not taken.
✓ Branch 158 (4→5) taken 105 times.
✗ Branch 159 (4→14) not taken.
✓ Branch 160 (3→4) taken 8541 times.
✗ Branch 161 (3→6) not taken.
✓ Branch 162 (4→5) taken 8541 times.
✗ Branch 163 (4→14) not taken.
✓ Branch 164 (3→4) taken 70 times.
✗ Branch 165 (3→6) not taken.
✓ Branch 166 (4→5) taken 70 times.
✗ Branch 167 (4→14) not taken.
✓ Branch 168 (3→4) taken 1177 times.
✗ Branch 169 (3→6) not taken.
✓ Branch 170 (4→5) taken 1177 times.
✗ Branch 171 (4→14) not taken.
✓ Branch 172 (3→4) taken 734 times.
✗ Branch 173 (3→6) not taken.
✓ Branch 174 (4→5) taken 734 times.
✗ Branch 175 (4→14) not taken.
✓ Branch 176 (3→4) taken 16 times.
✗ Branch 177 (3→6) not taken.
✓ Branch 178 (4→5) taken 16 times.
✗ Branch 179 (4→14) not taken.
✓ Branch 180 (3→4) taken 413 times.
✗ Branch 181 (3→6) not taken.
✓ Branch 182 (4→5) taken 413 times.
✗ Branch 183 (4→14) not taken.
✓ Branch 184 (3→4) taken 305 times.
✗ Branch 185 (3→6) not taken.
✓ Branch 186 (4→5) taken 305 times.
✗ Branch 187 (4→14) not taken.
✓ Branch 188 (3→4) taken 32671 times.
✗ Branch 189 (3→6) not taken.
✓ Branch 190 (4→5) taken 32671 times.
✗ Branch 191 (4→14) not taken.
✓ Branch 192 (3→4) taken 26925 times.
✗ Branch 193 (3→6) not taken.
✓ Branch 194 (4→5) taken 26925 times.
✗ Branch 195 (4→14) not taken.
✓ Branch 196 (3→4) taken 12455 times.
✗ Branch 197 (3→6) not taken.
✓ Branch 198 (4→5) taken 12455 times.
✗ Branch 199 (4→14) not taken.
✓ Branch 200 (3→4) taken 18212 times.
✗ Branch 201 (3→6) not taken.
✓ Branch 202 (4→5) taken 18212 times.
✗ Branch 203 (4→14) not taken.
✓ Branch 204 (3→4) taken 194 times.
✗ Branch 205 (3→6) not taken.
✓ Branch 206 (4→5) taken 194 times.
✗ Branch 207 (4→14) not taken.
✓ Branch 208 (3→4) taken 1321 times.
✗ Branch 209 (3→6) not taken.
✓ Branch 210 (4→5) taken 1321 times.
✗ Branch 211 (4→14) not taken.
✓ Branch 212 (3→4) taken 742 times.
✗ Branch 213 (3→6) not taken.
✓ Branch 214 (4→5) taken 742 times.
✗ Branch 215 (4→14) not taken.
✓ Branch 216 (3→4) taken 66 times.
✗ Branch 217 (3→6) not taken.
✓ Branch 218 (4→5) taken 66 times.
✗ Branch 219 (4→14) not taken.
✓ Branch 220 (3→4) taken 11321 times.
✗ Branch 221 (3→6) not taken.
✓ Branch 222 (4→5) taken 11321 times.
✗ Branch 223 (4→14) not taken.
✓ Branch 224 (3→4) taken 8024 times.
✗ Branch 225 (3→6) not taken.
✓ Branch 226 (4→5) taken 8024 times.
✗ Branch 227 (4→14) not taken.
✓ Branch 228 (3→4) taken 815 times.
✗ Branch 229 (3→6) not taken.
✓ Branch 230 (4→5) taken 815 times.
✗ Branch 231 (4→14) not taken.
✓ Branch 232 (3→4) taken 882 times.
✗ Branch 233 (3→6) not taken.
✓ Branch 234 (4→5) taken 882 times.
✗ Branch 235 (4→14) not taken.
✓ Branch 236 (3→4) taken 5598 times.
✗ Branch 237 (3→6) not taken.
✓ Branch 238 (4→5) taken 5598 times.
✗ Branch 239 (4→14) not taken.
✓ Branch 240 (3→4) taken 19082 times.
✗ Branch 241 (3→6) not taken.
✓ Branch 242 (4→5) taken 19082 times.
✗ Branch 243 (4→14) not taken.
✓ Branch 244 (3→4) taken 28 times.
✗ Branch 245 (3→6) not taken.
✓ Branch 246 (4→5) taken 28 times.
✗ Branch 247 (4→14) not taken.
✓ Branch 248 (3→4) taken 6 times.
✗ Branch 249 (3→6) not taken.
✓ Branch 250 (4→5) taken 6 times.
✗ Branch 251 (4→14) not taken.
✓ Branch 252 (3→4) taken 53 times.
✗ Branch 253 (3→6) not taken.
✓ Branch 254 (4→5) taken 53 times.
✗ Branch 255 (4→14) not taken.
✓ Branch 256 (3→4) taken 12 times.
✗ Branch 257 (3→6) not taken.
✓ Branch 258 (4→5) taken 12 times.
✗ Branch 259 (4→14) not taken.
✓ Branch 260 (3→4) taken 176 times.
✗ Branch 261 (3→6) not taken.
✓ Branch 262 (4→5) taken 176 times.
✗ Branch 263 (4→14) not taken.
✓ Branch 264 (3→4) taken 3655 times.
✗ Branch 265 (3→6) not taken.
✓ Branch 266 (4→5) taken 3655 times.
✗ Branch 267 (4→14) not taken.
✓ Branch 268 (3→4) taken 9 times.
✗ Branch 269 (3→6) not taken.
✓ Branch 270 (4→5) taken 9 times.
✗ Branch 271 (4→14) not taken.
✓ Branch 272 (3→4) taken 690 times.
✗ Branch 273 (3→6) not taken.
✓ Branch 274 (4→5) taken 690 times.
✗ Branch 275 (4→14) not taken.
✓ Branch 276 (3→4) taken 100 times.
✗ Branch 277 (3→6) not taken.
✓ Branch 278 (4→5) taken 100 times.
✗ Branch 279 (4→14) not taken.
✓ Branch 280 (3→4) taken 1237 times.
✗ Branch 281 (3→6) not taken.
✓ Branch 282 (4→5) taken 1237 times.
✗ Branch 283 (4→14) not taken.
✓ Branch 284 (3→4) taken 2316 times.
✗ Branch 285 (3→6) not taken.
✓ Branch 286 (4→5) taken 2316 times.
✗ Branch 287 (4→14) not taken.
✓ Branch 288 (3→4) taken 526 times.
✗ Branch 289 (3→6) not taken.
✓ Branch 290 (4→5) taken 526 times.
✗ Branch 291 (4→14) not taken.
✓ Branch 292 (3→4) taken 922 times.
✗ Branch 293 (3→6) not taken.
✓ Branch 294 (4→5) taken 922 times.
✗ Branch 295 (4→14) not taken.
✓ Branch 296 (3→4) taken 1161 times.
✗ Branch 297 (3→6) not taken.
✓ Branch 298 (4→5) taken 1161 times.
✗ Branch 299 (4→14) not taken.
✓ Branch 300 (3→4) taken 67 times.
✗ Branch 301 (3→6) not taken.
✓ Branch 302 (4→5) taken 67 times.
✗ Branch 303 (4→14) not taken.
✓ Branch 304 (3→4) taken 815 times.
✗ Branch 305 (3→6) not taken.
✓ Branch 306 (4→5) taken 815 times.
✗ Branch 307 (4→14) not taken.
✓ Branch 308 (3→4) taken 66 times.
✗ Branch 309 (3→6) not taken.
✓ Branch 310 (4→5) taken 66 times.
✗ Branch 311 (4→14) not taken.
✓ Branch 312 (3→4) taken 85 times.
✗ Branch 313 (3→6) not taken.
✓ Branch 314 (4→5) taken 85 times.
✗ Branch 315 (4→14) not taken.
✓ Branch 316 (3→4) taken 615 times.
✗ Branch 317 (3→6) not taken.
✓ Branch 318 (4→5) taken 615 times.
✗ Branch 319 (4→14) not taken.
✓ Branch 320 (3→4) taken 10425 times.
✗ Branch 321 (3→6) not taken.
✓ Branch 322 (4→5) taken 10425 times.
✗ Branch 323 (4→14) not taken.
✓ Branch 324 (3→4) taken 3442 times.
✗ Branch 325 (3→6) not taken.
✓ Branch 326 (4→5) taken 3442 times.
✗ Branch 327 (4→14) not taken.
✓ Branch 328 (3→4) taken 6983 times.
✗ Branch 329 (3→6) not taken.
✓ Branch 330 (4→5) taken 6983 times.
✗ Branch 331 (4→14) not taken.
✓ Branch 332 (3→4) taken 401 times.
✗ Branch 333 (3→6) not taken.
✓ Branch 334 (4→5) taken 401 times.
✗ Branch 335 (4→14) not taken.
✓ Branch 336 (3→4) taken 1064 times.
✗ Branch 337 (3→6) not taken.
✓ Branch 338 (4→5) taken 1064 times.
✗ Branch 339 (4→13) not taken.
|
1469339 | const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx; |
179 |
85/170✓ Branch 0 (7→8) taken 82 times.
✗ Branch 1 (7→14) not taken.
✓ Branch 2 (7→8) taken 14671 times.
✗ Branch 3 (7→14) not taken.
✓ Branch 4 (7→8) taken 41529 times.
✗ Branch 5 (7→14) not taken.
✓ Branch 6 (7→8) taken 41530 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 213 times.
✗ Branch 15 (7→14) not taken.
✓ Branch 16 (7→8) taken 70 times.
✗ Branch 17 (7→14) not taken.
✓ Branch 18 (7→8) taken 14347 times.
✗ Branch 19 (7→14) not taken.
✓ Branch 20 (7→8) taken 16511 times.
✗ Branch 21 (7→14) not taken.
✓ Branch 22 (7→8) taken 15841 times.
✗ Branch 23 (7→14) not taken.
✓ Branch 24 (7→8) taken 80718 times.
✗ Branch 25 (7→14) not taken.
✓ Branch 26 (7→8) taken 102332 times.
✗ Branch 27 (7→14) not taken.
✓ Branch 28 (7→8) taken 81835 times.
✗ Branch 29 (7→14) not taken.
✓ Branch 30 (7→8) taken 76551 times.
✗ Branch 31 (7→14) not taken.
✓ Branch 32 (7→8) taken 75350 times.
✗ Branch 33 (7→14) not taken.
✓ Branch 34 (7→8) taken 71623 times.
✗ Branch 35 (7→14) not taken.
✓ Branch 36 (7→8) taken 71508 times.
✗ Branch 37 (7→14) not taken.
✓ Branch 38 (7→8) taken 68024 times.
✗ Branch 39 (7→14) not taken.
✓ Branch 40 (7→8) taken 63428 times.
✗ Branch 41 (7→14) not taken.
✓ Branch 42 (7→8) taken 63404 times.
✗ Branch 43 (7→14) not taken.
✓ Branch 44 (7→8) taken 63395 times.
✗ Branch 45 (7→14) not taken.
✓ Branch 46 (7→8) taken 63327 times.
✗ Branch 47 (7→14) not taken.
✓ Branch 48 (7→8) taken 63088 times.
✗ Branch 49 (7→14) not taken.
✓ Branch 50 (7→8) taken 61947 times.
✗ Branch 51 (7→14) not taken.
✓ Branch 52 (7→8) taken 61114 times.
✗ Branch 53 (7→14) not taken.
✓ Branch 54 (7→8) taken 67554 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 805 times.
✗ Branch 59 (7→14) not taken.
✓ Branch 60 (7→8) taken 119 times.
✗ Branch 61 (7→14) not taken.
✓ Branch 62 (7→8) taken 2 times.
✗ Branch 63 (7→14) not taken.
✓ Branch 64 (7→8) taken 11 times.
✗ Branch 65 (7→14) not taken.
✓ Branch 66 (7→8) taken 217 times.
✗ Branch 67 (7→14) not taken.
✓ Branch 68 (7→8) taken 799 times.
✗ Branch 69 (7→14) not taken.
✓ Branch 70 (7→8) taken 1954 times.
✗ Branch 71 (7→14) not taken.
✓ Branch 72 (7→8) taken 687 times.
✗ Branch 73 (7→14) not taken.
✓ Branch 74 (7→8) taken 6 times.
✗ Branch 75 (7→14) not taken.
✓ Branch 76 (7→8) taken 183 times.
✗ Branch 77 (7→14) not taken.
✓ Branch 78 (7→8) taken 105 times.
✗ Branch 79 (7→14) not taken.
✓ Branch 80 (7→8) taken 8541 times.
✗ Branch 81 (7→14) not taken.
✓ Branch 82 (7→8) taken 70 times.
✗ Branch 83 (7→14) not taken.
✓ Branch 84 (7→8) taken 1177 times.
✗ Branch 85 (7→14) not taken.
✓ Branch 86 (7→8) taken 734 times.
✗ Branch 87 (7→14) not taken.
✓ Branch 88 (7→8) taken 16 times.
✗ Branch 89 (7→14) not taken.
✓ Branch 90 (7→8) taken 413 times.
✗ Branch 91 (7→14) not taken.
✓ Branch 92 (7→8) taken 305 times.
✗ Branch 93 (7→14) not taken.
✓ Branch 94 (7→8) taken 32671 times.
✗ Branch 95 (7→14) not taken.
✓ Branch 96 (7→8) taken 26925 times.
✗ Branch 97 (7→14) not taken.
✓ Branch 98 (7→8) taken 12455 times.
✗ Branch 99 (7→14) not taken.
✓ Branch 100 (7→8) taken 18212 times.
✗ Branch 101 (7→14) not taken.
✓ Branch 102 (7→8) taken 194 times.
✗ Branch 103 (7→14) not taken.
✓ Branch 104 (7→8) taken 1321 times.
✗ Branch 105 (7→14) not taken.
✓ Branch 106 (7→8) taken 742 times.
✗ Branch 107 (7→14) not taken.
✓ Branch 108 (7→8) taken 66 times.
✗ Branch 109 (7→14) not taken.
✓ Branch 110 (7→8) taken 11321 times.
✗ Branch 111 (7→14) not taken.
✓ Branch 112 (7→8) taken 8024 times.
✗ Branch 113 (7→14) not taken.
✓ Branch 114 (7→8) taken 815 times.
✗ Branch 115 (7→14) not taken.
✓ Branch 116 (7→8) taken 882 times.
✗ Branch 117 (7→14) not taken.
✓ Branch 118 (7→8) taken 5598 times.
✗ Branch 119 (7→14) not taken.
✓ Branch 120 (7→8) taken 19082 times.
✗ Branch 121 (7→14) not taken.
✓ Branch 122 (7→8) taken 28 times.
✗ Branch 123 (7→14) not taken.
✓ Branch 124 (7→8) taken 6 times.
✗ Branch 125 (7→14) not taken.
✓ Branch 126 (7→8) taken 53 times.
✗ Branch 127 (7→14) not taken.
✓ Branch 128 (7→8) taken 12 times.
✗ Branch 129 (7→14) not taken.
✓ Branch 130 (7→8) taken 176 times.
✗ Branch 131 (7→14) not taken.
✓ Branch 132 (7→8) taken 3655 times.
✗ Branch 133 (7→14) not taken.
✓ Branch 134 (7→8) taken 9 times.
✗ Branch 135 (7→14) not taken.
✓ Branch 136 (7→8) taken 690 times.
✗ Branch 137 (7→14) not taken.
✓ Branch 138 (7→8) taken 100 times.
✗ Branch 139 (7→14) not taken.
✓ Branch 140 (7→8) taken 1237 times.
✗ Branch 141 (7→14) not taken.
✓ Branch 142 (7→8) taken 2316 times.
✗ Branch 143 (7→14) not taken.
✓ Branch 144 (7→8) taken 526 times.
✗ Branch 145 (7→14) not taken.
✓ Branch 146 (7→8) taken 922 times.
✗ Branch 147 (7→14) not taken.
✓ Branch 148 (7→8) taken 1161 times.
✗ Branch 149 (7→14) not taken.
✓ Branch 150 (7→8) taken 67 times.
✗ Branch 151 (7→14) not taken.
✓ Branch 152 (7→8) taken 815 times.
✗ Branch 153 (7→14) not taken.
✓ Branch 154 (7→8) taken 66 times.
✗ Branch 155 (7→14) not taken.
✓ Branch 156 (7→8) taken 85 times.
✗ Branch 157 (7→14) not taken.
✓ Branch 158 (7→8) taken 615 times.
✗ Branch 159 (7→14) not taken.
✓ Branch 160 (7→8) taken 10425 times.
✗ Branch 161 (7→14) not taken.
✓ Branch 162 (7→8) taken 3442 times.
✗ Branch 163 (7→14) not taken.
✓ Branch 164 (7→8) taken 6983 times.
✗ Branch 165 (7→14) not taken.
✓ Branch 166 (7→8) taken 401 times.
✗ Branch 167 (7→14) not taken.
✓ Branch 168 (7→8) taken 1064 times.
✗ Branch 169 (7→13) not taken.
|
1469339 | return {ctx->start, startIdx, stopIdx, sourceFile}; |
180 | } | ||
181 | |||
182 | int32_t parseInt(TerminalNode *terminal); | ||
183 | int16_t parseShort(TerminalNode *terminal); | ||
184 | int64_t parseLong(TerminalNode *terminal); | ||
185 | int8_t parseChar(TerminalNode *terminal) const; | ||
186 | static std::string parseString(std::string input); | ||
187 | template <typename T> T parseNumeric(TerminalNode *terminal, const NumericParserCallback<T> &cb); | ||
188 | static void replaceEscapeChars(std::string &input); | ||
189 | std::string getIdentifier(TerminalNode *terminal, bool isTypeIdentifier) const; | ||
190 | }; | ||
191 | |||
192 | } // namespace spice::compiler | ||
193 |