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 | 721 | CSTVisualizer(GlobalResourceManager &resourceManager, SourceFile *sourceFile, const SpiceLexer *lexer, | |
22 | const SpiceParser *parser) | ||
23 |
3/6✓ Branch 0 (4→5) taken 721 times.
✗ Branch 1 (4→9) not taken.
✓ Branch 2 (5→6) taken 721 times.
✗ Branch 3 (5→9) not taken.
✓ Branch 4 (6→7) taken 721 times.
✗ Branch 5 (6→9) not taken.
|
721 | : CompilerPass(resourceManager, sourceFile), vocabulary(lexer->getVocabulary()), ruleNames(parser->getRuleNames()) {} |
24 | |||
25 | // Visitor methods | ||
26 |
2/4✓ Branch 0 (2→3) taken 721 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 721 times.
✗ Branch 3 (3→8) not taken.
|
721 | 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 7382 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 7382 times.
✗ Branch 3 (3→8) not taken.
|
7382 | std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override { return buildRule(ctx); } |
29 |
2/4✓ Branch 0 (2→3) taken 3656 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 3656 times.
✗ Branch 3 (3→8) not taken.
|
3656 | std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override { return buildRule(ctx); } |
30 |
2/4✓ Branch 0 (2→3) taken 11038 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 11038 times.
✗ Branch 3 (3→8) not taken.
|
11038 | std::any visitFctName(SpiceParser::FctNameContext *ctx) override { return buildRule(ctx); } |
31 |
2/4✓ Branch 0 (2→3) taken 854 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 854 times.
✗ Branch 3 (3→8) not taken.
|
854 | std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override { return buildRule(ctx); } |
32 |
2/4✓ Branch 0 (2→3) taken 60 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 60 times.
✗ Branch 3 (3→8) not taken.
|
60 | std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override { return buildRule(ctx); } |
33 |
2/4✓ Branch 0 (2→3) taken 550 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 550 times.
✗ Branch 3 (3→8) not taken.
|
550 | std::any visitStructDef(SpiceParser::StructDefContext *ctx) override { return buildRule(ctx); } |
34 |
2/4✓ Branch 0 (2→3) taken 80 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 80 times.
✗ Branch 3 (3→8) not taken.
|
80 | std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override { return buildRule(ctx); } |
35 |
2/4✓ Branch 0 (2→3) taken 59 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 59 times.
✗ Branch 3 (3→8) not taken.
|
59 | std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override { return buildRule(ctx); } |
36 |
2/4✓ Branch 0 (2→3) taken 1149 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1149 times.
✗ Branch 3 (3→8) not taken.
|
1149 | std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override { return buildRule(ctx); } |
37 |
2/4✓ Branch 0 (2→3) taken 952 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 952 times.
✗ Branch 3 (3→8) not taken.
|
952 | std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override { return buildRule(ctx); } |
38 |
2/4✓ Branch 0 (2→3) taken 461 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 461 times.
✗ Branch 3 (3→8) not taken.
|
461 | std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override { return buildRule(ctx); } |
39 |
2/4✓ Branch 0 (2→3) taken 2426 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 2426 times.
✗ Branch 3 (3→8) not taken.
|
2426 | std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override { return buildRule(ctx); } |
40 |
2/4✓ Branch 0 (2→3) taken 1261 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1261 times.
✗ Branch 3 (3→8) not taken.
|
1261 | std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override { return buildRule(ctx); } |
41 |
2/4✓ Branch 0 (2→3) taken 1261 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1261 times.
✗ Branch 3 (3→8) not taken.
|
1261 | std::any visitForHead(SpiceParser::ForHeadContext *ctx) override { return buildRule(ctx); } |
42 |
2/4✓ Branch 0 (2→3) taken 77 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 77 times.
✗ Branch 3 (3→8) not taken.
|
77 | std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override { return buildRule(ctx); } |
43 |
2/4✓ Branch 0 (2→3) taken 77 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 77 times.
✗ Branch 3 (3→8) not taken.
|
77 | std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override { return buildRule(ctx); } |
44 |
2/4✓ Branch 0 (2→3) taken 728 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 728 times.
✗ Branch 3 (3→8) not taken.
|
728 | 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 3970 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 3970 times.
✗ Branch 3 (3→8) not taken.
|
3970 | std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override { return buildRule(ctx); } |
47 |
2/4✓ Branch 0 (2→3) taken 228 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 228 times.
✗ Branch 3 (3→8) not taken.
|
228 | 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 106 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 106 times.
✗ Branch 3 (3→8) not taken.
|
106 | 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 19712 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 19712 times.
✗ Branch 3 (3→8) not taken.
|
19712 | std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override { return buildRule(ctx); } |
54 |
2/4✓ Branch 0 (2→3) taken 1239 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1239 times.
✗ Branch 3 (3→8) not taken.
|
1239 | std::any visitField(SpiceParser::FieldContext *ctx) override { return buildRule(ctx); } |
55 |
2/4✓ Branch 0 (2→3) taken 200 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 200 times.
✗ Branch 3 (3→8) not taken.
|
200 | std::any visitSignature(SpiceParser::SignatureContext *ctx) override { return buildRule(ctx); } |
56 |
2/4✓ Branch 0 (2→3) taken 6358 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 6358 times.
✗ Branch 3 (3→8) not taken.
|
6358 | std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override { return buildRule(ctx); } |
57 |
2/4✓ Branch 0 (2→3) taken 914 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 914 times.
✗ Branch 3 (3→8) not taken.
|
914 | std::any visitTypeLstWithEllipsis(SpiceParser::TypeLstWithEllipsisContext *ctx) override { return buildRule(ctx); } |
58 |
2/4✓ Branch 0 (2→3) taken 854 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 854 times.
✗ Branch 3 (3→8) not taken.
|
854 | std::any visitTypeAltsLst(SpiceParser::TypeAltsLstContext *ctx) override { return buildRule(ctx); } |
59 |
2/4✓ Branch 0 (2→3) taken 8474 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 8474 times.
✗ Branch 3 (3→8) not taken.
|
8474 | std::any visitParamLst(SpiceParser::ParamLstContext *ctx) override { return buildRule(ctx); } |
60 |
2/4✓ Branch 0 (2→3) taken 11113 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 11113 times.
✗ Branch 3 (3→8) not taken.
|
11113 | std::any visitArgLst(SpiceParser::ArgLstContext *ctx) override { return buildRule(ctx); } |
61 |
2/4✓ Branch 0 (2→3) taken 59 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 59 times.
✗ Branch 3 (3→8) not taken.
|
59 | std::any visitEnumItemLst(SpiceParser::EnumItemLstContext *ctx) override { return buildRule(ctx); } |
62 |
2/4✓ Branch 0 (2→3) taken 713 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 713 times.
✗ Branch 3 (3→8) not taken.
|
713 | std::any visitEnumItem(SpiceParser::EnumItemContext *ctx) override { return buildRule(ctx); } |
63 |
2/4✓ Branch 0 (2→3) taken 25988 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 25988 times.
✗ Branch 3 (3→8) not taken.
|
25988 | std::any visitStmt(SpiceParser::StmtContext *ctx) override { return buildRule(ctx); } |
64 |
2/4✓ Branch 0 (2→3) taken 18519 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 18519 times.
✗ Branch 3 (3→8) not taken.
|
18519 | std::any visitDeclStmt(SpiceParser::DeclStmtContext *ctx) override { return buildRule(ctx); } |
65 |
2/4✓ Branch 0 (2→3) taken 12302 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 12302 times.
✗ Branch 3 (3→8) not taken.
|
12302 | std::any visitExprStmt(SpiceParser::ExprStmtContext *ctx) override { return buildRule(ctx); } |
66 |
2/4✓ Branch 0 (2→3) taken 29111 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 29111 times.
✗ Branch 3 (3→8) not taken.
|
29111 | std::any visitQualifierLst(SpiceParser::QualifierLstContext *ctx) override { return buildRule(ctx); } |
67 |
2/4✓ Branch 0 (2→3) taken 35234 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 35234 times.
✗ Branch 3 (3→8) not taken.
|
35234 | std::any visitQualifier(SpiceParser::QualifierContext *ctx) override { return buildRule(ctx); } |
68 |
2/4✓ Branch 0 (2→3) taken 325 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 325 times.
✗ Branch 3 (3→8) not taken.
|
325 | std::any visitModAttr(SpiceParser::ModAttrContext *ctx) override { return buildRule(ctx); } |
69 |
2/4✓ Branch 0 (2→3) taken 423 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 423 times.
✗ Branch 3 (3→8) not taken.
|
423 | 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 749 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 749 times.
✗ Branch 3 (3→8) not taken.
|
749 | std::any visitAttrLst(SpiceParser::AttrLstContext *ctx) override { return buildRule(ctx); } |
72 |
2/4✓ Branch 0 (2→3) taken 1188 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1188 times.
✗ Branch 3 (3→8) not taken.
|
1188 | 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 8969 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 8969 times.
✗ Branch 3 (3→8) not taken.
|
8969 | std::any visitReturnStmt(SpiceParser::ReturnStmtContext *ctx) override { return buildRule(ctx); } |
75 |
2/4✓ Branch 0 (2→3) taken 103 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 103 times.
✗ Branch 3 (3→8) not taken.
|
103 | std::any visitBreakStmt(SpiceParser::BreakStmtContext *ctx) override { return buildRule(ctx); } |
76 |
2/4✓ Branch 0 (2→3) taken 184 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 184 times.
✗ Branch 3 (3→8) not taken.
|
184 | 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 1426 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1426 times.
✗ Branch 3 (3→8) not taken.
|
1426 | std::any visitBuiltinCall(SpiceParser::BuiltinCallContext *ctx) override { return buildRule(ctx); } |
79 |
2/4✓ Branch 0 (2→3) taken 177 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 177 times.
✗ Branch 3 (3→8) not taken.
|
177 | std::any visitPrintfCall(SpiceParser::PrintfCallContext *ctx) override { return buildRule(ctx); } |
80 |
2/4✓ Branch 0 (2→3) taken 234 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 234 times.
✗ Branch 3 (3→8) not taken.
|
234 | 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 108 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 108 times.
✗ Branch 3 (3→8) not taken.
|
108 | std::any visitLenCall(SpiceParser::LenCallContext *ctx) override { return buildRule(ctx); } |
84 |
2/4✓ Branch 0 (2→3) taken 907 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 907 times.
✗ Branch 3 (3→8) not taken.
|
907 | 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 66966 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 66966 times.
✗ Branch 3 (3→8) not taken.
|
66966 | std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override { return buildRule(ctx); } |
87 |
2/4✓ Branch 0 (2→3) taken 60020 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 60020 times.
✗ Branch 3 (3→8) not taken.
|
60020 | std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override { return buildRule(ctx); } |
88 |
2/4✓ Branch 0 (2→3) taken 60810 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 60810 times.
✗ Branch 3 (3→8) not taken.
|
60810 | std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override { return buildRule(ctx); } |
89 |
2/4✓ Branch 0 (2→3) taken 62027 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 62027 times.
✗ Branch 3 (3→8) not taken.
|
62027 | std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override { return buildRule(ctx); } |
90 |
2/4✓ Branch 0 (2→3) taken 62282 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 62282 times.
✗ Branch 3 (3→8) not taken.
|
62282 | std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override { return buildRule(ctx); } |
91 |
2/4✓ Branch 0 (2→3) taken 62355 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 62355 times.
✗ Branch 3 (3→8) not taken.
|
62355 | std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override { return buildRule(ctx); } |
92 |
2/4✓ Branch 0 (2→3) taken 62362 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 62362 times.
✗ Branch 3 (3→8) not taken.
|
62362 | std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override { return buildRule(ctx); } |
93 |
2/4✓ Branch 0 (2→3) taken 62379 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 62379 times.
✗ Branch 3 (3→8) not taken.
|
62379 | std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override { return buildRule(ctx); } |
94 |
2/4✓ Branch 0 (2→3) taken 66870 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 66870 times.
✗ Branch 3 (3→8) not taken.
|
66870 | std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override { return buildRule(ctx); } |
95 |
2/4✓ Branch 0 (2→3) taken 70510 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 70510 times.
✗ Branch 3 (3→8) not taken.
|
70510 | std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override { return buildRule(ctx); } |
96 |
2/4✓ Branch 0 (2→3) taken 70617 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 70617 times.
✗ Branch 3 (3→8) not taken.
|
70617 | std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override { return buildRule(ctx); } |
97 |
2/4✓ Branch 0 (2→3) taken 74472 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 74472 times.
✗ Branch 3 (3→8) not taken.
|
74472 | std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override { return buildRule(ctx); } |
98 |
2/4✓ Branch 0 (2→3) taken 75711 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 75711 times.
✗ Branch 3 (3→8) not taken.
|
75711 | std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override { return buildRule(ctx); } |
99 |
2/4✓ Branch 0 (2→3) taken 81324 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 81324 times.
✗ Branch 3 (3→8) not taken.
|
81324 | std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override { return buildRule(ctx); } |
100 |
2/4✓ Branch 0 (2→3) taken 103402 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 103402 times.
✗ Branch 3 (3→8) not taken.
|
103402 | std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override { return buildRule(ctx); } |
101 |
2/4✓ Branch 0 (2→3) taken 80283 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 80283 times.
✗ Branch 3 (3→8) not taken.
|
80283 | std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override { return buildRule(ctx); } |
102 |
2/4✓ Branch 0 (2→3) taken 15529 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 15529 times.
✗ Branch 3 (3→8) not taken.
|
15529 | std::any visitValue(SpiceParser::ValueContext *ctx) override { return buildRule(ctx); } |
103 |
2/4✓ Branch 0 (2→3) taken 13993 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 13993 times.
✗ Branch 3 (3→8) not taken.
|
13993 | 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 161 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 161 times.
✗ Branch 3 (3→8) not taken.
|
161 | 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 14705 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 14705 times.
✗ Branch 3 (3→8) not taken.
|
14705 | std::any visitConstant(SpiceParser::ConstantContext *ctx) override { return buildRule(ctx); } |
110 |
2/4✓ Branch 0 (2→3) taken 43561 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 43561 times.
✗ Branch 3 (3→8) not taken.
|
43561 | std::any visitDataType(SpiceParser::DataTypeContext *ctx) override { return buildRule(ctx); } |
111 |
2/4✓ Branch 0 (2→3) taken 43561 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 43561 times.
✗ Branch 3 (3→8) not taken.
|
43561 | std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override { return buildRule(ctx); } |
112 |
2/4✓ Branch 0 (2→3) taken 16412 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 16412 times.
✗ Branch 3 (3→8) not taken.
|
16412 | 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 7119 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 7119 times.
✗ Branch 3 (3→8) not taken.
|
7119 | std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override { return buildRule(ctx); } |
115 |
2/4✓ Branch 0 (2→3) taken 1650 times.
✗ Branch 1 (2→10) not taken.
✓ Branch 2 (3→4) taken 1650 times.
✗ Branch 3 (3→8) not taken.
|
1650 | 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 |