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 | 687316 | 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 | 687316 | tgt.reserve(src.size()); | |
141 |
2/2✓ Branch 0 (13→6) taken 720709 times.
✓ Branch 1 (13→14) taken 687295 times.
|
1408004 | for (SrcTy shiftExpr : src) |
142 |
4/6✓ Branch 0 (7→8) taken 720688 times.
✓ Branch 1 (7→17) taken 21 times.
✓ Branch 2 (8→9) taken 720688 times.
✗ Branch 3 (8→15) not taken.
✓ Branch 4 (9→10) taken 720688 times.
✗ Branch 5 (9→15) not taken.
|
720709 | tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr))); |
143 | 687295 | } | |
144 | |||
145 | template <typename T> | ||
146 | 1405115 | 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 1405115 times.
✗ Branch 1 (9→14) not taken.
|
1405115 | T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx)); |
151 | if constexpr (!std::is_same_v<T, EntryNode>) | ||
152 | 1404061 | node->parent = parentStack.top(); | |
153 | // This node is the parent for its children | ||
154 |
1/2✓ Branch 0 (11→12) taken 1405115 times.
✗ Branch 1 (11→15) not taken.
|
1405115 | parentStack.push(node); |
155 | 1405115 | 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 1551 times.
✗ Branch 1 (3→5) not taken.
✓ Branch 2 (3→4) taken 6365 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 1242 times.
✗ Branch 7 (3→5) not taken.
|
18516 | 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 82 times.
✗ Branch 2 (40→41) not taken.
✓ Branch 3 (40→42) taken 14421 times.
✗ Branch 4 (46→47) not taken.
✓ Branch 5 (46→48) taken 38831 times.
✗ Branch 6 (63→64) not taken.
✓ Branch 7 (63→65) taken 38831 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 212 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 13826 times.
✗ Branch 20 (48→49) not taken.
✓ Branch 21 (48→50) taken 15742 times.
✗ Branch 22 (54→55) not taken.
✓ Branch 23 (54→56) taken 15090 times.
✗ Branch 24 (80→81) not taken.
✓ Branch 25 (80→82) taken 77786 times.
✗ Branch 26 (38→39) not taken.
✓ Branch 27 (38→40) taken 99257 times.
✗ Branch 28 (40→41) not taken.
✓ Branch 29 (40→42) taken 78868 times.
✗ Branch 30 (20→21) not taken.
✓ Branch 31 (20→22) taken 73330 times.
✗ Branch 32 (34→35) not taken.
✓ Branch 33 (34→36) taken 72134 times.
✗ Branch 34 (29→30) not taken.
✓ Branch 35 (29→31) taken 68546 times.
✗ Branch 36 (37→38) not taken.
✓ Branch 37 (37→39) taken 68466 times.
✗ Branch 38 (19→20) not taken.
✓ Branch 39 (19→21) taken 65024 times.
✗ Branch 40 (13→14) not taken.
✓ Branch 41 (13→15) taken 60519 times.
✗ Branch 42 (7→8) not taken.
✓ Branch 43 (7→9) taken 60490 times.
✗ Branch 44 (7→8) not taken.
✓ Branch 45 (7→9) taken 60486 times.
✗ Branch 46 (7→8) not taken.
✓ Branch 47 (7→9) taken 60420 times.
✗ Branch 48 (7→8) not taken.
✓ Branch 49 (7→9) taken 60181 times.
✗ Branch 50 (7→8) not taken.
✓ Branch 51 (7→9) taken 59041 times.
✗ Branch 52 (30→31) not taken.
✓ Branch 53 (30→32) taken 58380 times.
✗ Branch 54 (26→27) not taken.
✓ Branch 55 (26→28) taken 64569 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 798 times.
✗ Branch 60 (8→9) not taken.
✓ Branch 61 (8→10) taken 123 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 208 times.
✗ Branch 66 (15→16) not taken.
✓ Branch 67 (15→17) taken 793 times.
✗ Branch 68 (47→48) not taken.
✓ Branch 69 (47→49) taken 1934 times.
✗ Branch 70 (16→17) not taken.
✓ Branch 71 (16→18) taken 662 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 183 times.
✗ Branch 76 (13→14) not taken.
✓ Branch 77 (13→15) taken 104 times.
✗ Branch 78 (11→12) not taken.
✓ Branch 79 (11→13) taken 7864 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 1169 times.
✗ Branch 84 (7→8) not taken.
✓ Branch 85 (7→9) taken 730 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 413 times.
✗ Branch 90 (14→15) not taken.
✓ Branch 91 (14→16) taken 301 times.
✗ Branch 92 (34→35) not taken.
✓ Branch 93 (34→36) taken 31497 times.
✗ Branch 94 (26→27) not taken.
✓ Branch 95 (26→28) taken 25835 times.
✗ Branch 96 (8→9) not taken.
✓ Branch 97 (8→10) taken 12080 times.
✗ Branch 98 (19→20) not taken.
✓ Branch 99 (19→21) taken 17290 times.
✗ Branch 100 (64→65) not taken.
✓ Branch 101 (64→66) taken 194 times.
✗ Branch 102 (20→21) not taken.
✓ Branch 103 (20→22) taken 1312 times.
✗ Branch 104 (13→14) not taken.
✓ Branch 105 (13→15) taken 742 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 10931 times.
✗ Branch 110 (13→14) not taken.
✓ Branch 111 (13→15) taken 7272 times.
✗ Branch 112 (7→8) not taken.
✓ Branch 113 (7→9) taken 812 times.
✗ Branch 114 (7→8) not taken.
✓ Branch 115 (7→9) taken 5482 times.
✗ Branch 116 (107→108) not taken.
✓ Branch 117 (107→109) taken 18322 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 175 times.
✗ Branch 128 (19→20) not taken.
✓ Branch 129 (19→21) taken 3622 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 683 times.
✗ Branch 134 (11→12) not taken.
✓ Branch 135 (11→13) taken 100 times.
✗ Branch 136 (11→12) not taken.
✓ Branch 137 (11→13) taken 1242 times.
✗ Branch 138 (8→9) not taken.
✓ Branch 139 (8→10) taken 2389 times.
✗ Branch 140 (17→18) not taken.
✓ Branch 141 (17→19) taken 518 times.
✗ Branch 142 (41→42) not taken.
✓ Branch 143 (41→43) taken 870 times.
✗ Branch 144 (19→20) not taken.
✓ Branch 145 (19→21) taken 1149 times.
✗ Branch 146 (24→25) not taken.
✓ Branch 147 (24→26) taken 55 times.
✗ Branch 148 (12→13) not taken.
✓ Branch 149 (12→14) taken 812 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 85 times.
✗ Branch 154 (78→79) not taken.
✓ Branch 155 (78→80) taken 609 times.
✗ Branch 156 (30→31) not taken.
✓ Branch 157 (30→32) taken 9635 times.
✗ Branch 158 (47→48) not taken.
✓ Branch 159 (47→49) taken 3406 times.
✗ Branch 160 (51→52) not taken.
✓ Branch 161 (51→53) taken 6229 times.
✗ Branch 162 (22→23) not taken.
✓ Branch 163 (22→24) taken 395 times.
✗ Branch 164 (129→130) not taken.
✓ Branch 165 (129→131) taken 1049 times.
|
1405059 | assert(parentStack.top() == node); |
171 | 1405059 | parentStack.pop(); | |
172 | 1405059 | return node; | |
173 | } | ||
174 | |||
175 | ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const { | ||
176 |
83/166✓ Branch 0 (2→3) taken 82 times.
✗ Branch 1 (2→14) not taken.
✓ Branch 2 (2→3) taken 14421 times.
✗ Branch 3 (2→14) not taken.
✓ Branch 4 (2→3) taken 38831 times.
✗ Branch 5 (2→14) not taken.
✓ Branch 6 (2→3) taken 38832 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 212 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 13826 times.
✗ Branch 19 (2→14) not taken.
✓ Branch 20 (2→3) taken 15744 times.
✗ Branch 21 (2→14) not taken.
✓ Branch 22 (2→3) taken 15090 times.
✗ Branch 23 (2→14) not taken.
✓ Branch 24 (2→3) taken 77788 times.
✗ Branch 25 (2→14) not taken.
✓ Branch 26 (2→3) taken 99259 times.
✗ Branch 27 (2→14) not taken.
✓ Branch 28 (2→3) taken 78870 times.
✗ Branch 29 (2→14) not taken.
✓ Branch 30 (2→3) taken 73332 times.
✗ Branch 31 (2→14) not taken.
✓ Branch 32 (2→3) taken 72136 times.
✗ Branch 33 (2→14) not taken.
✓ Branch 34 (2→3) taken 68548 times.
✗ Branch 35 (2→14) not taken.
✓ Branch 36 (2→3) taken 68468 times.
✗ Branch 37 (2→14) not taken.
✓ Branch 38 (2→3) taken 65026 times.
✗ Branch 39 (2→14) not taken.
✓ Branch 40 (2→3) taken 60521 times.
✗ Branch 41 (2→14) not taken.
✓ Branch 42 (2→3) taken 60492 times.
✗ Branch 43 (2→14) not taken.
✓ Branch 44 (2→3) taken 60488 times.
✗ Branch 45 (2→14) not taken.
✓ Branch 46 (2→3) taken 60422 times.
✗ Branch 47 (2→14) not taken.
✓ Branch 48 (2→3) taken 60183 times.
✗ Branch 49 (2→14) not taken.
✓ Branch 50 (2→3) taken 59043 times.
✗ Branch 51 (2→14) not taken.
✓ Branch 52 (2→3) taken 58382 times.
✗ Branch 53 (2→14) not taken.
✓ Branch 54 (2→3) taken 64571 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 798 times.
✗ Branch 59 (2→14) not taken.
✓ Branch 60 (2→3) taken 123 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 208 times.
✗ Branch 65 (2→14) not taken.
✓ Branch 66 (2→3) taken 793 times.
✗ Branch 67 (2→14) not taken.
✓ Branch 68 (2→3) taken 1934 times.
✗ Branch 69 (2→14) not taken.
✓ Branch 70 (2→3) taken 662 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 183 times.
✗ Branch 75 (2→14) not taken.
✓ Branch 76 (2→3) taken 104 times.
✗ Branch 77 (2→14) not taken.
✓ Branch 78 (2→3) taken 7864 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 1170 times.
✗ Branch 83 (2→14) not taken.
✓ Branch 84 (2→3) taken 731 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 413 times.
✗ Branch 89 (2→14) not taken.
✓ Branch 90 (2→3) taken 302 times.
✗ Branch 91 (2→14) not taken.
✓ Branch 92 (2→3) taken 31497 times.
✗ Branch 93 (2→14) not taken.
✓ Branch 94 (2→3) taken 25836 times.
✗ Branch 95 (2→14) not taken.
✓ Branch 96 (2→3) taken 12080 times.
✗ Branch 97 (2→14) not taken.
✓ Branch 98 (2→3) taken 17294 times.
✗ Branch 99 (2→14) not taken.
✓ Branch 100 (2→3) taken 194 times.
✗ Branch 101 (2→14) not taken.
✓ Branch 102 (2→3) taken 1312 times.
✗ Branch 103 (2→14) not taken.
✓ Branch 104 (2→3) taken 742 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 10931 times.
✗ Branch 109 (2→14) not taken.
✓ Branch 110 (2→3) taken 7272 times.
✗ Branch 111 (2→14) not taken.
✓ Branch 112 (2→3) taken 812 times.
✗ Branch 113 (2→14) not taken.
✓ Branch 114 (2→3) taken 5482 times.
✗ Branch 115 (2→14) not taken.
✓ Branch 116 (2→3) taken 18326 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 175 times.
✗ Branch 127 (2→14) not taken.
✓ Branch 128 (2→3) taken 3622 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 683 times.
✗ Branch 133 (2→14) not taken.
✓ Branch 134 (2→3) taken 100 times.
✗ Branch 135 (2→14) not taken.
✓ Branch 136 (2→3) taken 1242 times.
✗ Branch 137 (2→14) not taken.
✓ Branch 138 (2→3) taken 2389 times.
✗ Branch 139 (2→14) not taken.
✓ Branch 140 (2→3) taken 518 times.
✗ Branch 141 (2→14) not taken.
✓ Branch 142 (2→3) taken 870 times.
✗ Branch 143 (2→14) not taken.
✓ Branch 144 (2→3) taken 1149 times.
✗ Branch 145 (2→14) not taken.
✓ Branch 146 (2→3) taken 55 times.
✗ Branch 147 (2→14) not taken.
✓ Branch 148 (2→3) taken 812 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 85 times.
✗ Branch 153 (2→14) not taken.
✓ Branch 154 (2→3) taken 609 times.
✗ Branch 155 (2→14) not taken.
✓ Branch 156 (2→3) taken 9635 times.
✗ Branch 157 (2→14) not taken.
✓ Branch 158 (2→3) taken 3406 times.
✗ Branch 159 (2→14) not taken.
✓ Branch 160 (2→3) taken 6229 times.
✗ Branch 161 (2→14) not taken.
✓ Branch 162 (2→3) taken 399 times.
✗ Branch 163 (2→14) not taken.
✓ Branch 164 (2→3) taken 1054 times.
✗ Branch 165 (2→13) not taken.
|
1405115 | const size_t startIdx = ctx->start->getStartIndex(); |
177 |
166/332✓ 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 14421 times.
✗ Branch 5 (3→6) not taken.
✓ Branch 6 (4→5) taken 14421 times.
✗ Branch 7 (4→14) not taken.
✓ Branch 8 (3→4) taken 38831 times.
✗ Branch 9 (3→6) not taken.
✓ Branch 10 (4→5) taken 38831 times.
✗ Branch 11 (4→14) not taken.
✓ Branch 12 (3→4) taken 38832 times.
✗ Branch 13 (3→6) not taken.
✓ Branch 14 (4→5) taken 38832 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 212 times.
✗ Branch 29 (3→6) not taken.
✓ Branch 30 (4→5) taken 212 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 13826 times.
✗ Branch 37 (3→6) not taken.
✓ Branch 38 (4→5) taken 13826 times.
✗ Branch 39 (4→14) not taken.
✓ Branch 40 (3→4) taken 15744 times.
✗ Branch 41 (3→6) not taken.
✓ Branch 42 (4→5) taken 15744 times.
✗ Branch 43 (4→14) not taken.
✓ Branch 44 (3→4) taken 15090 times.
✗ Branch 45 (3→6) not taken.
✓ Branch 46 (4→5) taken 15090 times.
✗ Branch 47 (4→14) not taken.
✓ Branch 48 (3→4) taken 77788 times.
✗ Branch 49 (3→6) not taken.
✓ Branch 50 (4→5) taken 77788 times.
✗ Branch 51 (4→14) not taken.
✓ Branch 52 (3→4) taken 99259 times.
✗ Branch 53 (3→6) not taken.
✓ Branch 54 (4→5) taken 99259 times.
✗ Branch 55 (4→14) not taken.
✓ Branch 56 (3→4) taken 78870 times.
✗ Branch 57 (3→6) not taken.
✓ Branch 58 (4→5) taken 78870 times.
✗ Branch 59 (4→14) not taken.
✓ Branch 60 (3→4) taken 73332 times.
✗ Branch 61 (3→6) not taken.
✓ Branch 62 (4→5) taken 73332 times.
✗ Branch 63 (4→14) not taken.
✓ Branch 64 (3→4) taken 72136 times.
✗ Branch 65 (3→6) not taken.
✓ Branch 66 (4→5) taken 72136 times.
✗ Branch 67 (4→14) not taken.
✓ Branch 68 (3→4) taken 68548 times.
✗ Branch 69 (3→6) not taken.
✓ Branch 70 (4→5) taken 68548 times.
✗ Branch 71 (4→14) not taken.
✓ Branch 72 (3→4) taken 68468 times.
✗ Branch 73 (3→6) not taken.
✓ Branch 74 (4→5) taken 68468 times.
✗ Branch 75 (4→14) not taken.
✓ Branch 76 (3→4) taken 65026 times.
✗ Branch 77 (3→6) not taken.
✓ Branch 78 (4→5) taken 65026 times.
✗ Branch 79 (4→14) not taken.
✓ Branch 80 (3→4) taken 60521 times.
✗ Branch 81 (3→6) not taken.
✓ Branch 82 (4→5) taken 60521 times.
✗ Branch 83 (4→14) not taken.
✓ Branch 84 (3→4) taken 60492 times.
✗ Branch 85 (3→6) not taken.
✓ Branch 86 (4→5) taken 60492 times.
✗ Branch 87 (4→14) not taken.
✓ Branch 88 (3→4) taken 60488 times.
✗ Branch 89 (3→6) not taken.
✓ Branch 90 (4→5) taken 60488 times.
✗ Branch 91 (4→14) not taken.
✓ Branch 92 (3→4) taken 60422 times.
✗ Branch 93 (3→6) not taken.
✓ Branch 94 (4→5) taken 60422 times.
✗ Branch 95 (4→14) not taken.
✓ Branch 96 (3→4) taken 60183 times.
✗ Branch 97 (3→6) not taken.
✓ Branch 98 (4→5) taken 60183 times.
✗ Branch 99 (4→14) not taken.
✓ Branch 100 (3→4) taken 59043 times.
✗ Branch 101 (3→6) not taken.
✓ Branch 102 (4→5) taken 59043 times.
✗ Branch 103 (4→14) not taken.
✓ Branch 104 (3→4) taken 58382 times.
✗ Branch 105 (3→6) not taken.
✓ Branch 106 (4→5) taken 58382 times.
✗ Branch 107 (4→14) not taken.
✓ Branch 108 (3→4) taken 64571 times.
✗ Branch 109 (3→6) not taken.
✓ Branch 110 (4→5) taken 64571 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 798 times.
✗ Branch 117 (3→6) not taken.
✓ Branch 118 (4→5) taken 798 times.
✗ Branch 119 (4→14) not taken.
✓ Branch 120 (3→4) taken 123 times.
✗ Branch 121 (3→6) not taken.
✓ Branch 122 (4→5) taken 123 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 208 times.
✗ Branch 129 (3→6) not taken.
✓ Branch 130 (4→5) taken 208 times.
✗ Branch 131 (4→14) not taken.
✓ Branch 132 (3→4) taken 793 times.
✗ Branch 133 (3→6) not taken.
✓ Branch 134 (4→5) taken 793 times.
✗ Branch 135 (4→14) not taken.
✓ Branch 136 (3→4) taken 1934 times.
✗ Branch 137 (3→6) not taken.
✓ Branch 138 (4→5) taken 1934 times.
✗ Branch 139 (4→14) not taken.
✓ Branch 140 (3→4) taken 662 times.
✗ Branch 141 (3→6) not taken.
✓ Branch 142 (4→5) taken 662 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 183 times.
✗ Branch 149 (3→6) not taken.
✓ Branch 150 (4→5) taken 183 times.
✗ Branch 151 (4→14) not taken.
✓ Branch 152 (3→4) taken 104 times.
✗ Branch 153 (3→6) not taken.
✓ Branch 154 (4→5) taken 104 times.
✗ Branch 155 (4→14) not taken.
✓ Branch 156 (3→4) taken 7864 times.
✗ Branch 157 (3→6) not taken.
✓ Branch 158 (4→5) taken 7864 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 1170 times.
✗ Branch 165 (3→6) not taken.
✓ Branch 166 (4→5) taken 1170 times.
✗ Branch 167 (4→14) not taken.
✓ Branch 168 (3→4) taken 731 times.
✗ Branch 169 (3→6) not taken.
✓ Branch 170 (4→5) taken 731 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 413 times.
✗ Branch 177 (3→6) not taken.
✓ Branch 178 (4→5) taken 413 times.
✗ Branch 179 (4→14) not taken.
✓ Branch 180 (3→4) taken 302 times.
✗ Branch 181 (3→6) not taken.
✓ Branch 182 (4→5) taken 302 times.
✗ Branch 183 (4→14) not taken.
✓ Branch 184 (3→4) taken 31497 times.
✗ Branch 185 (3→6) not taken.
✓ Branch 186 (4→5) taken 31497 times.
✗ Branch 187 (4→14) not taken.
✓ Branch 188 (3→4) taken 25836 times.
✗ Branch 189 (3→6) not taken.
✓ Branch 190 (4→5) taken 25836 times.
✗ Branch 191 (4→14) not taken.
✓ Branch 192 (3→4) taken 12080 times.
✗ Branch 193 (3→6) not taken.
✓ Branch 194 (4→5) taken 12080 times.
✗ Branch 195 (4→14) not taken.
✓ Branch 196 (3→4) taken 17294 times.
✗ Branch 197 (3→6) not taken.
✓ Branch 198 (4→5) taken 17294 times.
✗ Branch 199 (4→14) not taken.
✓ Branch 200 (3→4) taken 194 times.
✗ Branch 201 (3→6) not taken.
✓ Branch 202 (4→5) taken 194 times.
✗ Branch 203 (4→14) not taken.
✓ Branch 204 (3→4) taken 1312 times.
✗ Branch 205 (3→6) not taken.
✓ Branch 206 (4→5) taken 1312 times.
✗ Branch 207 (4→14) not taken.
✓ Branch 208 (3→4) taken 742 times.
✗ Branch 209 (3→6) not taken.
✓ Branch 210 (4→5) taken 742 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 10931 times.
✗ Branch 217 (3→6) not taken.
✓ Branch 218 (4→5) taken 10931 times.
✗ Branch 219 (4→14) not taken.
✓ Branch 220 (3→4) taken 7272 times.
✗ Branch 221 (3→6) not taken.
✓ Branch 222 (4→5) taken 7272 times.
✗ Branch 223 (4→14) not taken.
✓ Branch 224 (3→4) taken 812 times.
✗ Branch 225 (3→6) not taken.
✓ Branch 226 (4→5) taken 812 times.
✗ Branch 227 (4→14) not taken.
✓ Branch 228 (3→4) taken 5482 times.
✗ Branch 229 (3→6) not taken.
✓ Branch 230 (4→5) taken 5482 times.
✗ Branch 231 (4→14) not taken.
✓ Branch 232 (3→4) taken 18326 times.
✗ Branch 233 (3→6) not taken.
✓ Branch 234 (4→5) taken 18326 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 175 times.
✗ Branch 253 (3→6) not taken.
✓ Branch 254 (4→5) taken 175 times.
✗ Branch 255 (4→14) not taken.
✓ Branch 256 (3→4) taken 3622 times.
✗ Branch 257 (3→6) not taken.
✓ Branch 258 (4→5) taken 3622 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 683 times.
✗ Branch 265 (3→6) not taken.
✓ Branch 266 (4→5) taken 683 times.
✗ Branch 267 (4→14) not taken.
✓ Branch 268 (3→4) taken 100 times.
✗ Branch 269 (3→6) not taken.
✓ Branch 270 (4→5) taken 100 times.
✗ Branch 271 (4→14) not taken.
✓ Branch 272 (3→4) taken 1242 times.
✗ Branch 273 (3→6) not taken.
✓ Branch 274 (4→5) taken 1242 times.
✗ Branch 275 (4→14) not taken.
✓ Branch 276 (3→4) taken 2389 times.
✗ Branch 277 (3→6) not taken.
✓ Branch 278 (4→5) taken 2389 times.
✗ Branch 279 (4→14) not taken.
✓ Branch 280 (3→4) taken 518 times.
✗ Branch 281 (3→6) not taken.
✓ Branch 282 (4→5) taken 518 times.
✗ Branch 283 (4→14) not taken.
✓ Branch 284 (3→4) taken 870 times.
✗ Branch 285 (3→6) not taken.
✓ Branch 286 (4→5) taken 870 times.
✗ Branch 287 (4→14) not taken.
✓ Branch 288 (3→4) taken 1149 times.
✗ Branch 289 (3→6) not taken.
✓ Branch 290 (4→5) taken 1149 times.
✗ Branch 291 (4→14) not taken.
✓ Branch 292 (3→4) taken 55 times.
✗ Branch 293 (3→6) not taken.
✓ Branch 294 (4→5) taken 55 times.
✗ Branch 295 (4→14) not taken.
✓ Branch 296 (3→4) taken 812 times.
✗ Branch 297 (3→6) not taken.
✓ Branch 298 (4→5) taken 812 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 85 times.
✗ Branch 305 (3→6) not taken.
✓ Branch 306 (4→5) taken 85 times.
✗ Branch 307 (4→14) not taken.
✓ Branch 308 (3→4) taken 609 times.
✗ Branch 309 (3→6) not taken.
✓ Branch 310 (4→5) taken 609 times.
✗ Branch 311 (4→14) not taken.
✓ Branch 312 (3→4) taken 9635 times.
✗ Branch 313 (3→6) not taken.
✓ Branch 314 (4→5) taken 9635 times.
✗ Branch 315 (4→14) not taken.
✓ Branch 316 (3→4) taken 3406 times.
✗ Branch 317 (3→6) not taken.
✓ Branch 318 (4→5) taken 3406 times.
✗ Branch 319 (4→14) not taken.
✓ Branch 320 (3→4) taken 6229 times.
✗ Branch 321 (3→6) not taken.
✓ Branch 322 (4→5) taken 6229 times.
✗ Branch 323 (4→14) not taken.
✓ Branch 324 (3→4) taken 399 times.
✗ Branch 325 (3→6) not taken.
✓ Branch 326 (4→5) taken 399 times.
✗ Branch 327 (4→14) not taken.
✓ Branch 328 (3→4) taken 1054 times.
✗ Branch 329 (3→6) not taken.
✓ Branch 330 (4→5) taken 1054 times.
✗ Branch 331 (4→13) not taken.
|
1405115 | const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx; |
178 |
83/166✓ Branch 0 (7→8) taken 82 times.
✗ Branch 1 (7→14) not taken.
✓ Branch 2 (7→8) taken 14421 times.
✗ Branch 3 (7→14) not taken.
✓ Branch 4 (7→8) taken 38831 times.
✗ Branch 5 (7→14) not taken.
✓ Branch 6 (7→8) taken 38832 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 212 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 13826 times.
✗ Branch 19 (7→14) not taken.
✓ Branch 20 (7→8) taken 15744 times.
✗ Branch 21 (7→14) not taken.
✓ Branch 22 (7→8) taken 15090 times.
✗ Branch 23 (7→14) not taken.
✓ Branch 24 (7→8) taken 77788 times.
✗ Branch 25 (7→14) not taken.
✓ Branch 26 (7→8) taken 99259 times.
✗ Branch 27 (7→14) not taken.
✓ Branch 28 (7→8) taken 78870 times.
✗ Branch 29 (7→14) not taken.
✓ Branch 30 (7→8) taken 73332 times.
✗ Branch 31 (7→14) not taken.
✓ Branch 32 (7→8) taken 72136 times.
✗ Branch 33 (7→14) not taken.
✓ Branch 34 (7→8) taken 68548 times.
✗ Branch 35 (7→14) not taken.
✓ Branch 36 (7→8) taken 68468 times.
✗ Branch 37 (7→14) not taken.
✓ Branch 38 (7→8) taken 65026 times.
✗ Branch 39 (7→14) not taken.
✓ Branch 40 (7→8) taken 60521 times.
✗ Branch 41 (7→14) not taken.
✓ Branch 42 (7→8) taken 60492 times.
✗ Branch 43 (7→14) not taken.
✓ Branch 44 (7→8) taken 60488 times.
✗ Branch 45 (7→14) not taken.
✓ Branch 46 (7→8) taken 60422 times.
✗ Branch 47 (7→14) not taken.
✓ Branch 48 (7→8) taken 60183 times.
✗ Branch 49 (7→14) not taken.
✓ Branch 50 (7→8) taken 59043 times.
✗ Branch 51 (7→14) not taken.
✓ Branch 52 (7→8) taken 58382 times.
✗ Branch 53 (7→14) not taken.
✓ Branch 54 (7→8) taken 64571 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 798 times.
✗ Branch 59 (7→14) not taken.
✓ Branch 60 (7→8) taken 123 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 208 times.
✗ Branch 65 (7→14) not taken.
✓ Branch 66 (7→8) taken 793 times.
✗ Branch 67 (7→14) not taken.
✓ Branch 68 (7→8) taken 1934 times.
✗ Branch 69 (7→14) not taken.
✓ Branch 70 (7→8) taken 662 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 183 times.
✗ Branch 75 (7→14) not taken.
✓ Branch 76 (7→8) taken 104 times.
✗ Branch 77 (7→14) not taken.
✓ Branch 78 (7→8) taken 7864 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 1170 times.
✗ Branch 83 (7→14) not taken.
✓ Branch 84 (7→8) taken 731 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 413 times.
✗ Branch 89 (7→14) not taken.
✓ Branch 90 (7→8) taken 302 times.
✗ Branch 91 (7→14) not taken.
✓ Branch 92 (7→8) taken 31497 times.
✗ Branch 93 (7→14) not taken.
✓ Branch 94 (7→8) taken 25836 times.
✗ Branch 95 (7→14) not taken.
✓ Branch 96 (7→8) taken 12080 times.
✗ Branch 97 (7→14) not taken.
✓ Branch 98 (7→8) taken 17294 times.
✗ Branch 99 (7→14) not taken.
✓ Branch 100 (7→8) taken 194 times.
✗ Branch 101 (7→14) not taken.
✓ Branch 102 (7→8) taken 1312 times.
✗ Branch 103 (7→14) not taken.
✓ Branch 104 (7→8) taken 742 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 10931 times.
✗ Branch 109 (7→14) not taken.
✓ Branch 110 (7→8) taken 7272 times.
✗ Branch 111 (7→14) not taken.
✓ Branch 112 (7→8) taken 812 times.
✗ Branch 113 (7→14) not taken.
✓ Branch 114 (7→8) taken 5482 times.
✗ Branch 115 (7→14) not taken.
✓ Branch 116 (7→8) taken 18326 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 175 times.
✗ Branch 127 (7→14) not taken.
✓ Branch 128 (7→8) taken 3622 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 683 times.
✗ Branch 133 (7→14) not taken.
✓ Branch 134 (7→8) taken 100 times.
✗ Branch 135 (7→14) not taken.
✓ Branch 136 (7→8) taken 1242 times.
✗ Branch 137 (7→14) not taken.
✓ Branch 138 (7→8) taken 2389 times.
✗ Branch 139 (7→14) not taken.
✓ Branch 140 (7→8) taken 518 times.
✗ Branch 141 (7→14) not taken.
✓ Branch 142 (7→8) taken 870 times.
✗ Branch 143 (7→14) not taken.
✓ Branch 144 (7→8) taken 1149 times.
✗ Branch 145 (7→14) not taken.
✓ Branch 146 (7→8) taken 55 times.
✗ Branch 147 (7→14) not taken.
✓ Branch 148 (7→8) taken 812 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 85 times.
✗ Branch 153 (7→14) not taken.
✓ Branch 154 (7→8) taken 609 times.
✗ Branch 155 (7→14) not taken.
✓ Branch 156 (7→8) taken 9635 times.
✗ Branch 157 (7→14) not taken.
✓ Branch 158 (7→8) taken 3406 times.
✗ Branch 159 (7→14) not taken.
✓ Branch 160 (7→8) taken 6229 times.
✗ Branch 161 (7→14) not taken.
✓ Branch 162 (7→8) taken 399 times.
✗ Branch 163 (7→14) not taken.
✓ Branch 164 (7→8) taken 1054 times.
✗ Branch 165 (7→13) not taken.
|
1405115 | 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 |