GCC Code Coverage Report


Directory: ../
File: src/visualizer/CSTVisualizer.h
Date: 2025-08-26 18:26:32
Exec Total Coverage
Lines: 85 92 92.4%
Functions: 84 91 92.3%
Branches: 169 366 46.2%

Line Branch Exec Source
1 // Copyright (c) 2021-2025 ChilliBits. All rights reserved.
2
3 #pragma once
4
5 #include <SpiceLexer.h>
6 #include <SpiceVisitor.h>
7
8 #include <CompilerPass.h>
9
10 namespace spice::compiler {
11
12 /**
13 * Visitor for debug purposes (is only executed in the compiler debug mode and when explicitly enabling it via cli flag)
14 *
15 * Jobs:
16 * - Visualize CST
17 */
18 class CSTVisualizer final : CompilerPass, public SpiceVisitor {
19 public:
20 // Constructors
21 666 CSTVisualizer(GlobalResourceManager &resourceManager, SourceFile *sourceFile, const SpiceLexer *lexer,
22 const SpiceParser *parser)
23
3/6
✓ Branch 0 (4→5) taken 666 times.
✗ Branch 1 (4→9) not taken.
✓ Branch 2 (5→6) taken 666 times.
✗ Branch 3 (5→9) not taken.
✓ Branch 4 (6→7) taken 666 times.
✗ Branch 5 (6→9) not taken.
666 : CompilerPass(resourceManager, sourceFile), vocabulary(lexer->getVocabulary()), ruleNames(parser->getRuleNames()) {}
24
25 // Visitor methods
26
2/4
✓ Branch 0 (2→3) taken 666 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 666 times.
✗ Branch 3 (3→8) not taken.
666 std::any visitEntry(SpiceParser::EntryContext *ctx) override { return buildRule(ctx); }
27
2/4
✓ Branch 0 (2→3) taken 8 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 8 times.
✗ Branch 3 (3→8) not taken.
8 std::any visitMainFunctionDef(SpiceParser::MainFunctionDefContext *ctx) override { return buildRule(ctx); }
28
2/4
✓ Branch 0 (2→3) taken 6857 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 6857 times.
✗ Branch 3 (3→8) not taken.
6857 std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override { return buildRule(ctx); }
29
2/4
✓ Branch 0 (2→3) taken 3348 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 3348 times.
✗ Branch 3 (3→8) not taken.
3348 std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override { return buildRule(ctx); }
30
2/4
✓ Branch 0 (2→3) taken 10205 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 10205 times.
✗ Branch 3 (3→8) not taken.
10205 std::any visitFctName(SpiceParser::FctNameContext *ctx) override { return buildRule(ctx); }
31
2/4
✓ Branch 0 (2→3) taken 776 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 776 times.
✗ Branch 3 (3→8) not taken.
776 std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override { return buildRule(ctx); }
32
2/4
✓ Branch 0 (2→3) taken 58 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 58 times.
✗ Branch 3 (3→8) not taken.
58 std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override { return buildRule(ctx); }
33
2/4
✓ Branch 0 (2→3) taken 492 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 492 times.
✗ Branch 3 (3→8) not taken.
492 std::any visitStructDef(SpiceParser::StructDefContext *ctx) override { return buildRule(ctx); }
34
2/4
✓ Branch 0 (2→3) taken 70 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 70 times.
✗ Branch 3 (3→8) not taken.
70 std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override { return buildRule(ctx); }
35
2/4
✓ Branch 0 (2→3) taken 57 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57 times.
✗ Branch 3 (3→8) not taken.
57 std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override { return buildRule(ctx); }
36
2/4
✓ Branch 0 (2→3) taken 1137 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1137 times.
✗ Branch 3 (3→8) not taken.
1137 std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override { return buildRule(ctx); }
37
2/4
✓ Branch 0 (2→3) taken 911 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 911 times.
✗ Branch 3 (3→8) not taken.
911 std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override { return buildRule(ctx); }
38
2/4
✓ Branch 0 (2→3) taken 393 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 393 times.
✗ Branch 3 (3→8) not taken.
393 std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override { return buildRule(ctx); }
39
2/4
✓ Branch 0 (2→3) taken 2309 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 2309 times.
✗ Branch 3 (3→8) not taken.
2309 std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override { return buildRule(ctx); }
40
2/4
✓ Branch 0 (2→3) taken 1187 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1187 times.
✗ Branch 3 (3→8) not taken.
1187 std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override { return buildRule(ctx); }
41
2/4
✓ Branch 0 (2→3) taken 1187 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1187 times.
✗ Branch 3 (3→8) not taken.
1187 std::any visitForHead(SpiceParser::ForHeadContext *ctx) override { return buildRule(ctx); }
42
2/4
✓ Branch 0 (2→3) taken 61 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 61 times.
✗ Branch 3 (3→8) not taken.
61 std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override { return buildRule(ctx); }
43
2/4
✓ Branch 0 (2→3) taken 61 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 61 times.
✗ Branch 3 (3→8) not taken.
61 std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override { return buildRule(ctx); }
44
2/4
✓ Branch 0 (2→3) taken 674 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 674 times.
✗ Branch 3 (3→8) not taken.
674 std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override { return buildRule(ctx); }
45
2/4
✓ Branch 0 (2→3) taken 3 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 3 times.
✗ Branch 3 (3→8) not taken.
3 std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override { return buildRule(ctx); }
46
2/4
✓ Branch 0 (2→3) taken 3589 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 3589 times.
✗ Branch 3 (3→8) not taken.
3589 std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override { return buildRule(ctx); }
47
2/4
✓ Branch 0 (2→3) taken 165 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 165 times.
✗ Branch 3 (3→8) not taken.
165 std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override { return buildRule(ctx); }
48
2/4
✓ Branch 0 (2→3) taken 5 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 5 times.
✗ Branch 3 (3→8) not taken.
5 std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override { return buildRule(ctx); }
49
2/4
✓ Branch 0 (2→3) taken 31 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 31 times.
✗ Branch 3 (3→8) not taken.
31 std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override { return buildRule(ctx); }
50
2/4
✓ Branch 0 (2→3) taken 3 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 3 times.
✗ Branch 3 (3→8) not taken.
3 std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override { return buildRule(ctx); }
51
2/4
✓ Branch 0 (2→3) taken 102 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 102 times.
✗ Branch 3 (3→8) not taken.
102 std::any visitAssertStmt(SpiceParser::AssertStmtContext *ctx) override { return buildRule(ctx); }
52 std::any visitAnonymousBlockStmt(SpiceParser::AnonymousBlockStmtContext *ctx) override { return buildRule(ctx); }
53
2/4
✓ Branch 0 (2→3) taken 18190 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 18190 times.
✗ Branch 3 (3→8) not taken.
18190 std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override { return buildRule(ctx); }
54
2/4
✓ Branch 0 (2→3) taken 1109 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1109 times.
✗ Branch 3 (3→8) not taken.
1109 std::any visitField(SpiceParser::FieldContext *ctx) override { return buildRule(ctx); }
55
2/4
✓ Branch 0 (2→3) taken 178 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 178 times.
✗ Branch 3 (3→8) not taken.
178 std::any visitSignature(SpiceParser::SignatureContext *ctx) override { return buildRule(ctx); }
56
2/4
✓ Branch 0 (2→3) taken 5386 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 5386 times.
✗ Branch 3 (3→8) not taken.
5386 std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override { return buildRule(ctx); }
57
2/4
✓ Branch 0 (2→3) taken 873 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 873 times.
✗ Branch 3 (3→8) not taken.
873 std::any visitTypeLstWithEllipsis(SpiceParser::TypeLstWithEllipsisContext *ctx) override { return buildRule(ctx); }
58
2/4
✓ Branch 0 (2→3) taken 776 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 776 times.
✗ Branch 3 (3→8) not taken.
776 std::any visitTypeAltsLst(SpiceParser::TypeAltsLstContext *ctx) override { return buildRule(ctx); }
59
2/4
✓ Branch 0 (2→3) taken 7894 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 7894 times.
✗ Branch 3 (3→8) not taken.
7894 std::any visitParamLst(SpiceParser::ParamLstContext *ctx) override { return buildRule(ctx); }
60
2/4
✓ Branch 0 (2→3) taken 10271 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 10271 times.
✗ Branch 3 (3→8) not taken.
10271 std::any visitArgLst(SpiceParser::ArgLstContext *ctx) override { return buildRule(ctx); }
61
2/4
✓ Branch 0 (2→3) taken 57 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57 times.
✗ Branch 3 (3→8) not taken.
57 std::any visitEnumItemLst(SpiceParser::EnumItemLstContext *ctx) override { return buildRule(ctx); }
62
2/4
✓ Branch 0 (2→3) taken 709 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 709 times.
✗ Branch 3 (3→8) not taken.
709 std::any visitEnumItem(SpiceParser::EnumItemContext *ctx) override { return buildRule(ctx); }
63
2/4
✓ Branch 0 (2→3) taken 23894 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 23894 times.
✗ Branch 3 (3→8) not taken.
23894 std::any visitStmt(SpiceParser::StmtContext *ctx) override { return buildRule(ctx); }
64
2/4
✓ Branch 0 (2→3) taken 17282 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 17282 times.
✗ Branch 3 (3→8) not taken.
17282 std::any visitDeclStmt(SpiceParser::DeclStmtContext *ctx) override { return buildRule(ctx); }
65
2/4
✓ Branch 0 (2→3) taken 11142 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 11142 times.
✗ Branch 3 (3→8) not taken.
11142 std::any visitExprStmt(SpiceParser::ExprStmtContext *ctx) override { return buildRule(ctx); }
66
2/4
✓ Branch 0 (2→3) taken 26773 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 26773 times.
✗ Branch 3 (3→8) not taken.
26773 std::any visitQualifierLst(SpiceParser::QualifierLstContext *ctx) override { return buildRule(ctx); }
67
2/4
✓ Branch 0 (2→3) taken 32514 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 32514 times.
✗ Branch 3 (3→8) not taken.
32514 std::any visitQualifier(SpiceParser::QualifierContext *ctx) override { return buildRule(ctx); }
68
2/4
✓ Branch 0 (2→3) taken 302 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 302 times.
✗ Branch 3 (3→8) not taken.
302 std::any visitModAttr(SpiceParser::ModAttrContext *ctx) override { return buildRule(ctx); }
69
2/4
✓ Branch 0 (2→3) taken 399 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 399 times.
✗ Branch 3 (3→8) not taken.
399 std::any visitTopLevelDefAttr(SpiceParser::TopLevelDefAttrContext *ctx) override { return buildRule(ctx); }
70
2/4
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1 times.
✗ Branch 3 (3→8) not taken.
1 std::any visitLambdaAttr(SpiceParser::LambdaAttrContext *ctx) override { return buildRule(ctx); }
71
2/4
✓ Branch 0 (2→3) taken 702 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 702 times.
✗ Branch 3 (3→8) not taken.
702 std::any visitAttrLst(SpiceParser::AttrLstContext *ctx) override { return buildRule(ctx); }
72
2/4
✓ Branch 0 (2→3) taken 1141 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1141 times.
✗ Branch 3 (3→8) not taken.
1141 std::any visitAttr(SpiceParser::AttrContext *ctx) override { return buildRule(ctx); }
73
2/4
✓ Branch 0 (2→3) taken 48 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 48 times.
✗ Branch 3 (3→8) not taken.
48 std::any visitCaseConstant(SpiceParser::CaseConstantContext *ctx) override { return buildRule(ctx); }
74
2/4
✓ Branch 0 (2→3) taken 8368 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 8368 times.
✗ Branch 3 (3→8) not taken.
8368 std::any visitReturnStmt(SpiceParser::ReturnStmtContext *ctx) override { return buildRule(ctx); }
75
2/4
✓ Branch 0 (2→3) taken 99 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 99 times.
✗ Branch 3 (3→8) not taken.
99 std::any visitBreakStmt(SpiceParser::BreakStmtContext *ctx) override { return buildRule(ctx); }
76
2/4
✓ Branch 0 (2→3) taken 176 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 176 times.
✗ Branch 3 (3→8) not taken.
176 std::any visitContinueStmt(SpiceParser::ContinueStmtContext *ctx) override { return buildRule(ctx); }
77 std::any visitFallthroughStmt(SpiceParser::FallthroughStmtContext *ctx) override { return buildRule(ctx); }
78
2/4
✓ Branch 0 (2→3) taken 1282 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1282 times.
✗ Branch 3 (3→8) not taken.
1282 std::any visitBuiltinCall(SpiceParser::BuiltinCallContext *ctx) override { return buildRule(ctx); }
79
2/4
✓ Branch 0 (2→3) taken 172 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 172 times.
✗ Branch 3 (3→8) not taken.
172 std::any visitPrintfCall(SpiceParser::PrintfCallContext *ctx) override { return buildRule(ctx); }
80
2/4
✓ Branch 0 (2→3) taken 202 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 202 times.
✗ Branch 3 (3→8) not taken.
202 std::any visitSizeOfCall(SpiceParser::SizeOfCallContext *ctx) override { return buildRule(ctx); }
81 std::any visitAlignOfCall(SpiceParser::AlignOfCallContext *ctx) override { return buildRule(ctx); }
82 std::any visitTypeIdCall(SpiceParser::TypeIdCallContext *ctx) override { return buildRule(ctx); }
83
2/4
✓ Branch 0 (2→3) taken 104 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 104 times.
✗ Branch 3 (3→8) not taken.
104 std::any visitLenCall(SpiceParser::LenCallContext *ctx) override { return buildRule(ctx); }
84
2/4
✓ Branch 0 (2→3) taken 804 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 804 times.
✗ Branch 3 (3→8) not taken.
804 std::any visitPanicCall(SpiceParser::PanicCallContext *ctx) override { return buildRule(ctx); }
85 std::any visitSysCall(SpiceParser::SysCallContext *ctx) override { return buildRule(ctx); }
86
2/4
✓ Branch 0 (2→3) taken 61902 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 61902 times.
✗ Branch 3 (3→8) not taken.
61902 std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override { return buildRule(ctx); }
87
2/4
✓ Branch 0 (2→3) taken 55636 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 55636 times.
✗ Branch 3 (3→8) not taken.
55636 std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override { return buildRule(ctx); }
88
2/4
✓ Branch 0 (2→3) taken 56386 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 56386 times.
✗ Branch 3 (3→8) not taken.
56386 std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override { return buildRule(ctx); }
89
2/4
✓ Branch 0 (2→3) taken 57517 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57517 times.
✗ Branch 3 (3→8) not taken.
57517 std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override { return buildRule(ctx); }
90
2/4
✓ Branch 0 (2→3) taken 57736 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57736 times.
✗ Branch 3 (3→8) not taken.
57736 std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override { return buildRule(ctx); }
91
2/4
✓ Branch 0 (2→3) taken 57799 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57799 times.
✗ Branch 3 (3→8) not taken.
57799 std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override { return buildRule(ctx); }
92
2/4
✓ Branch 0 (2→3) taken 57804 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57804 times.
✗ Branch 3 (3→8) not taken.
57804 std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override { return buildRule(ctx); }
93
2/4
✓ Branch 0 (2→3) taken 57821 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 57821 times.
✗ Branch 3 (3→8) not taken.
57821 std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override { return buildRule(ctx); }
94
2/4
✓ Branch 0 (2→3) taken 61941 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 61941 times.
✗ Branch 3 (3→8) not taken.
61941 std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override { return buildRule(ctx); }
95
2/4
✓ Branch 0 (2→3) taken 65333 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 65333 times.
✗ Branch 3 (3→8) not taken.
65333 std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override { return buildRule(ctx); }
96
2/4
✓ Branch 0 (2→3) taken 65424 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 65424 times.
✗ Branch 3 (3→8) not taken.
65424 std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override { return buildRule(ctx); }
97
2/4
✓ Branch 0 (2→3) taken 69073 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 69073 times.
✗ Branch 3 (3→8) not taken.
69073 std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override { return buildRule(ctx); }
98
2/4
✓ Branch 0 (2→3) taken 70252 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 70252 times.
✗ Branch 3 (3→8) not taken.
70252 std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override { return buildRule(ctx); }
99
2/4
✓ Branch 0 (2→3) taken 75170 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 75170 times.
✗ Branch 3 (3→8) not taken.
75170 std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override { return buildRule(ctx); }
100
2/4
✓ Branch 0 (2→3) taken 95389 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 95389 times.
✗ Branch 3 (3→8) not taken.
95389 std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override { return buildRule(ctx); }
101
2/4
✓ Branch 0 (2→3) taken 74235 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 74235 times.
✗ Branch 3 (3→8) not taken.
74235 std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override { return buildRule(ctx); }
102
2/4
✓ Branch 0 (2→3) taken 14158 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 14158 times.
✗ Branch 3 (3→8) not taken.
14158 std::any visitValue(SpiceParser::ValueContext *ctx) override { return buildRule(ctx); }
103
2/4
✓ Branch 0 (2→3) taken 12832 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 12832 times.
✗ Branch 3 (3→8) not taken.
12832 std::any visitFctCall(SpiceParser::FctCallContext *ctx) override { return buildRule(ctx); }
104
2/4
✓ Branch 0 (2→3) taken 9 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 9 times.
✗ Branch 3 (3→8) not taken.
9 std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override { return buildRule(ctx); }
105
2/4
✓ Branch 0 (2→3) taken 157 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 157 times.
✗ Branch 3 (3→8) not taken.
157 std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override { return buildRule(ctx); }
106 std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override { return buildRule(ctx); }
107
2/4
✓ Branch 0 (2→3) taken 2 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 2 times.
✗ Branch 3 (3→8) not taken.
2 std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override { return buildRule(ctx); }
108 std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override { return buildRule(ctx); }
109
2/4
✓ Branch 0 (2→3) taken 13896 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 13896 times.
✗ Branch 3 (3→8) not taken.
13896 std::any visitConstant(SpiceParser::ConstantContext *ctx) override { return buildRule(ctx); }
110
2/4
✓ Branch 0 (2→3) taken 39784 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 39784 times.
✗ Branch 3 (3→8) not taken.
39784 std::any visitDataType(SpiceParser::DataTypeContext *ctx) override { return buildRule(ctx); }
111
2/4
✓ Branch 0 (2→3) taken 39784 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 39784 times.
✗ Branch 3 (3→8) not taken.
39784 std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override { return buildRule(ctx); }
112
2/4
✓ Branch 0 (2→3) taken 14150 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 14150 times.
✗ Branch 3 (3→8) not taken.
14150 std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override { return buildRule(ctx); }
113
2/4
✓ Branch 0 (2→3) taken 44 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 44 times.
✗ Branch 3 (3→8) not taken.
44 std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override { return buildRule(ctx); }
114
2/4
✓ Branch 0 (2→3) taken 6401 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 6401 times.
✗ Branch 3 (3→8) not taken.
6401 std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override { return buildRule(ctx); }
115
2/4
✓ Branch 0 (2→3) taken 1546 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1546 times.
✗ Branch 3 (3→8) not taken.
1546 std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override { return buildRule(ctx); }
116
117 private:
118 // Members
119 const antlr4::dfa::Vocabulary &vocabulary;
120 const std::vector<std::string> ruleNames;
121 int currentTabs = 1;
122 std::string parentNodeId;
123
124 // Private methods
125 std::string buildRule(antlr4::ParserRuleContext *ctx);
126 [[nodiscard]] std::string getSpaces() const;
127 [[nodiscard]] static std::string tokenToCodeLoc(const antlr4::Token &token);
128 };
129
130 } // namespace spice::compiler
131