src/visualizer/CSTVisualizer.h
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright (c) 2021-2026 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 | 800 | CSTVisualizer(GlobalResourceManager &resourceManager, SourceFile *sourceFile, const SpiceLexer *lexer, | |
| 22 | const SpiceParser *parser) | ||
| 23 |
3/6✓ Branch 4 → 5 taken 800 times.
✗ Branch 4 → 9 not taken.
✓ Branch 5 → 6 taken 800 times.
✗ Branch 5 → 9 not taken.
✓ Branch 6 → 7 taken 800 times.
✗ Branch 6 → 9 not taken.
|
800 | : CompilerPass(resourceManager, sourceFile), vocabulary(lexer->getVocabulary()), ruleNames(parser->getRuleNames()) {} |
| 24 | |||
| 25 | // Visitor methods | ||
| 26 |
2/4✓ Branch 2 → 3 taken 800 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 800 times.
✗ Branch 3 → 8 not taken.
|
800 | std::any visitEntry(SpiceParser::EntryContext *ctx) override { return buildRule(ctx); } |
| 27 |
2/4✓ Branch 2 → 3 taken 8 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 8 times.
✗ Branch 3 → 8 not taken.
|
8 | std::any visitMainFunctionDef(SpiceParser::MainFunctionDefContext *ctx) override { return buildRule(ctx); } |
| 28 |
2/4✓ Branch 2 → 3 taken 8097 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 8097 times.
✗ Branch 3 → 8 not taken.
|
8097 | std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override { return buildRule(ctx); } |
| 29 |
2/4✓ Branch 2 → 3 taken 4058 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 4058 times.
✗ Branch 3 → 8 not taken.
|
4058 | std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override { return buildRule(ctx); } |
| 30 |
2/4✓ Branch 2 → 3 taken 12155 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 12155 times.
✗ Branch 3 → 8 not taken.
|
12155 | std::any visitFctName(SpiceParser::FctNameContext *ctx) override { return buildRule(ctx); } |
| 31 |
2/4✓ Branch 2 → 3 taken 950 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 950 times.
✗ Branch 3 → 8 not taken.
|
950 | std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override { return buildRule(ctx); } |
| 32 |
2/4✓ Branch 2 → 3 taken 62 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 62 times.
✗ Branch 3 → 8 not taken.
|
62 | std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override { return buildRule(ctx); } |
| 33 |
2/4✓ Branch 2 → 3 taken 605 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 605 times.
✗ Branch 3 → 8 not taken.
|
605 | std::any visitStructDef(SpiceParser::StructDefContext *ctx) override { return buildRule(ctx); } |
| 34 |
2/4✓ Branch 2 → 3 taken 92 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 92 times.
✗ Branch 3 → 8 not taken.
|
92 | std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override { return buildRule(ctx); } |
| 35 |
2/4✓ Branch 2 → 3 taken 59 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 59 times.
✗ Branch 3 → 8 not taken.
|
59 | std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override { return buildRule(ctx); } |
| 36 |
2/4✓ Branch 2 → 3 taken 1175 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1175 times.
✗ Branch 3 → 8 not taken.
|
1175 | std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override { return buildRule(ctx); } |
| 37 |
2/4✓ Branch 2 → 3 taken 1029 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1029 times.
✗ Branch 3 → 8 not taken.
|
1029 | std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override { return buildRule(ctx); } |
| 38 |
2/4✓ Branch 2 → 3 taken 500 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 500 times.
✗ Branch 3 → 8 not taken.
|
500 | std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override { return buildRule(ctx); } |
| 39 |
2/4✓ Branch 2 → 3 taken 2692 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 2692 times.
✗ Branch 3 → 8 not taken.
|
2692 | std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override { return buildRule(ctx); } |
| 40 |
2/4✓ Branch 2 → 3 taken 1398 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1398 times.
✗ Branch 3 → 8 not taken.
|
1398 | std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override { return buildRule(ctx); } |
| 41 |
2/4✓ Branch 2 → 3 taken 1398 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1398 times.
✗ Branch 3 → 8 not taken.
|
1398 | std::any visitForHead(SpiceParser::ForHeadContext *ctx) override { return buildRule(ctx); } |
| 42 |
2/4✓ Branch 2 → 3 taken 77 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 77 times.
✗ Branch 3 → 8 not taken.
|
77 | std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override { return buildRule(ctx); } |
| 43 |
2/4✓ Branch 2 → 3 taken 77 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 77 times.
✗ Branch 3 → 8 not taken.
|
77 | std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override { return buildRule(ctx); } |
| 44 |
2/4✓ Branch 2 → 3 taken 806 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 806 times.
✗ Branch 3 → 8 not taken.
|
806 | std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override { return buildRule(ctx); } |
| 45 |
2/4✓ Branch 2 → 3 taken 3 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 3 times.
✗ Branch 3 → 8 not taken.
|
3 | std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override { return buildRule(ctx); } |
| 46 |
2/4✓ Branch 2 → 3 taken 4340 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 4340 times.
✗ Branch 3 → 8 not taken.
|
4340 | std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override { return buildRule(ctx); } |
| 47 |
2/4✓ Branch 2 → 3 taken 238 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 238 times.
✗ Branch 3 → 8 not taken.
|
238 | std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override { return buildRule(ctx); } |
| 48 |
2/4✓ Branch 2 → 3 taken 5 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 5 times.
✗ Branch 3 → 8 not taken.
|
5 | std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override { return buildRule(ctx); } |
| 49 |
2/4✓ Branch 2 → 3 taken 31 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 31 times.
✗ Branch 3 → 8 not taken.
|
31 | std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override { return buildRule(ctx); } |
| 50 |
2/4✓ Branch 2 → 3 taken 3 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 3 times.
✗ Branch 3 → 8 not taken.
|
3 | std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override { return buildRule(ctx); } |
| 51 |
2/4✓ Branch 2 → 3 taken 115 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 115 times.
✗ Branch 3 → 8 not taken.
|
115 | 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 2 → 3 taken 21686 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 21686 times.
✗ Branch 3 → 8 not taken.
|
21686 | std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override { return buildRule(ctx); } |
| 54 |
2/4✓ Branch 2 → 3 taken 1354 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1354 times.
✗ Branch 3 → 8 not taken.
|
1354 | std::any visitField(SpiceParser::FieldContext *ctx) override { return buildRule(ctx); } |
| 55 |
2/4✓ Branch 2 → 3 taken 230 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 230 times.
✗ Branch 3 → 8 not taken.
|
230 | std::any visitSignature(SpiceParser::SignatureContext *ctx) override { return buildRule(ctx); } |
| 56 |
2/4✓ Branch 2 → 3 taken 7003 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 7003 times.
✗ Branch 3 → 8 not taken.
|
7003 | std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override { return buildRule(ctx); } |
| 57 |
2/4✓ Branch 2 → 3 taken 989 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 989 times.
✗ Branch 3 → 8 not taken.
|
989 | std::any visitTypeLstWithEllipsis(SpiceParser::TypeLstWithEllipsisContext *ctx) override { return buildRule(ctx); } |
| 58 |
2/4✓ Branch 2 → 3 taken 950 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 950 times.
✗ Branch 3 → 8 not taken.
|
950 | std::any visitTypeAltsLst(SpiceParser::TypeAltsLstContext *ctx) override { return buildRule(ctx); } |
| 59 |
2/4✓ Branch 2 → 3 taken 9316 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 9316 times.
✗ Branch 3 → 8 not taken.
|
9316 | std::any visitParamLst(SpiceParser::ParamLstContext *ctx) override { return buildRule(ctx); } |
| 60 |
2/4✓ Branch 2 → 3 taken 12080 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 12080 times.
✗ Branch 3 → 8 not taken.
|
12080 | std::any visitArgLst(SpiceParser::ArgLstContext *ctx) override { return buildRule(ctx); } |
| 61 |
2/4✓ Branch 2 → 3 taken 59 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 59 times.
✗ Branch 3 → 8 not taken.
|
59 | std::any visitEnumItemLst(SpiceParser::EnumItemLstContext *ctx) override { return buildRule(ctx); } |
| 62 |
2/4✓ Branch 2 → 3 taken 713 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 713 times.
✗ Branch 3 → 8 not taken.
|
713 | std::any visitEnumItem(SpiceParser::EnumItemContext *ctx) override { return buildRule(ctx); } |
| 63 |
2/4✓ Branch 2 → 3 taken 28532 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 28532 times.
✗ Branch 3 → 8 not taken.
|
28532 | std::any visitStmt(SpiceParser::StmtContext *ctx) override { return buildRule(ctx); } |
| 64 |
2/4✓ Branch 2 → 3 taken 20388 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 20388 times.
✗ Branch 3 → 8 not taken.
|
20388 | std::any visitDeclStmt(SpiceParser::DeclStmtContext *ctx) override { return buildRule(ctx); } |
| 65 |
2/4✓ Branch 2 → 3 taken 13550 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 13550 times.
✗ Branch 3 → 8 not taken.
|
13550 | std::any visitExprStmt(SpiceParser::ExprStmtContext *ctx) override { return buildRule(ctx); } |
| 66 |
2/4✓ Branch 2 → 3 taken 32161 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 32161 times.
✗ Branch 3 → 8 not taken.
|
32161 | std::any visitQualifierLst(SpiceParser::QualifierLstContext *ctx) override { return buildRule(ctx); } |
| 67 |
2/4✓ Branch 2 → 3 taken 38735 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 38735 times.
✗ Branch 3 → 8 not taken.
|
38735 | std::any visitQualifier(SpiceParser::QualifierContext *ctx) override { return buildRule(ctx); } |
| 68 |
2/4✓ Branch 2 → 3 taken 366 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 366 times.
✗ Branch 3 → 8 not taken.
|
366 | std::any visitModAttr(SpiceParser::ModAttrContext *ctx) override { return buildRule(ctx); } |
| 69 |
2/4✓ Branch 2 → 3 taken 469 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 469 times.
✗ Branch 3 → 8 not taken.
|
469 | std::any visitTopLevelDefAttr(SpiceParser::TopLevelDefAttrContext *ctx) override { return buildRule(ctx); } |
| 70 |
2/4✓ Branch 2 → 3 taken 1 time.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1 time.
✗ Branch 3 → 8 not taken.
|
1 | std::any visitLambdaAttr(SpiceParser::LambdaAttrContext *ctx) override { return buildRule(ctx); } |
| 71 |
2/4✓ Branch 2 → 3 taken 836 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 836 times.
✗ Branch 3 → 8 not taken.
|
836 | std::any visitAttrLst(SpiceParser::AttrLstContext *ctx) override { return buildRule(ctx); } |
| 72 |
2/4✓ Branch 2 → 3 taken 1119 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1119 times.
✗ Branch 3 → 8 not taken.
|
1119 | std::any visitAttr(SpiceParser::AttrContext *ctx) override { return buildRule(ctx); } |
| 73 |
2/4✓ Branch 2 → 3 taken 48 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 48 times.
✗ Branch 3 → 8 not taken.
|
48 | std::any visitCaseConstant(SpiceParser::CaseConstantContext *ctx) override { return buildRule(ctx); } |
| 74 |
2/4✓ Branch 2 → 3 taken 9790 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 9790 times.
✗ Branch 3 → 8 not taken.
|
9790 | std::any visitReturnStmt(SpiceParser::ReturnStmtContext *ctx) override { return buildRule(ctx); } |
| 75 |
2/4✓ Branch 2 → 3 taken 119 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 119 times.
✗ Branch 3 → 8 not taken.
|
119 | std::any visitBreakStmt(SpiceParser::BreakStmtContext *ctx) override { return buildRule(ctx); } |
| 76 |
2/4✓ Branch 2 → 3 taken 202 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 202 times.
✗ Branch 3 → 8 not taken.
|
202 | 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 2 → 3 taken 1629 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1629 times.
✗ Branch 3 → 8 not taken.
|
1629 | std::any visitBuiltinCall(SpiceParser::BuiltinCallContext *ctx) override { return buildRule(ctx); } |
| 79 |
2/4✓ Branch 2 → 3 taken 225 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 225 times.
✗ Branch 3 → 8 not taken.
|
225 | std::any visitPrintfCall(SpiceParser::PrintfCallContext *ctx) override { return buildRule(ctx); } |
| 80 |
2/4✓ Branch 2 → 3 taken 266 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 266 times.
✗ Branch 3 → 8 not taken.
|
266 | 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 2 → 3 taken 127 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 127 times.
✗ Branch 3 → 8 not taken.
|
127 | std::any visitLenCall(SpiceParser::LenCallContext *ctx) override { return buildRule(ctx); } |
| 84 |
2/4✓ Branch 2 → 3 taken 1011 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1011 times.
✗ Branch 3 → 8 not taken.
|
1011 | 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 2 → 3 taken 73355 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 73355 times.
✗ Branch 3 → 8 not taken.
|
73355 | std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override { return buildRule(ctx); } |
| 87 |
2/4✓ Branch 2 → 3 taken 65706 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 65706 times.
✗ Branch 3 → 8 not taken.
|
65706 | std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override { return buildRule(ctx); } |
| 88 |
2/4✓ Branch 2 → 3 taken 66570 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 66570 times.
✗ Branch 3 → 8 not taken.
|
66570 | std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override { return buildRule(ctx); } |
| 89 |
2/4✓ Branch 2 → 3 taken 67905 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 67905 times.
✗ Branch 3 → 8 not taken.
|
67905 | std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override { return buildRule(ctx); } |
| 90 |
2/4✓ Branch 2 → 3 taken 68185 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 68185 times.
✗ Branch 3 → 8 not taken.
|
68185 | std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override { return buildRule(ctx); } |
| 91 |
2/4✓ Branch 2 → 3 taken 68268 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 68268 times.
✗ Branch 3 → 8 not taken.
|
68268 | std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override { return buildRule(ctx); } |
| 92 |
2/4✓ Branch 2 → 3 taken 68275 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 68275 times.
✗ Branch 3 → 8 not taken.
|
68275 | std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override { return buildRule(ctx); } |
| 93 |
2/4✓ Branch 2 → 3 taken 68304 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 68304 times.
✗ Branch 3 → 8 not taken.
|
68304 | std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override { return buildRule(ctx); } |
| 94 |
2/4✓ Branch 2 → 3 taken 73241 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 73241 times.
✗ Branch 3 → 8 not taken.
|
73241 | std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override { return buildRule(ctx); } |
| 95 |
2/4✓ Branch 2 → 3 taken 77275 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 77275 times.
✗ Branch 3 → 8 not taken.
|
77275 | std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override { return buildRule(ctx); } |
| 96 |
2/4✓ Branch 2 → 3 taken 77382 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 77382 times.
✗ Branch 3 → 8 not taken.
|
77382 | std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override { return buildRule(ctx); } |
| 97 |
2/4✓ Branch 2 → 3 taken 81618 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 81618 times.
✗ Branch 3 → 8 not taken.
|
81618 | std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override { return buildRule(ctx); } |
| 98 |
2/4✓ Branch 2 → 3 taken 82985 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 82985 times.
✗ Branch 3 → 8 not taken.
|
82985 | std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override { return buildRule(ctx); } |
| 99 |
2/4✓ Branch 2 → 3 taken 89200 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 89200 times.
✗ Branch 3 → 8 not taken.
|
89200 | std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override { return buildRule(ctx); } |
| 100 |
2/4✓ Branch 2 → 3 taken 113409 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 113409 times.
✗ Branch 3 → 8 not taken.
|
113409 | std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override { return buildRule(ctx); } |
| 101 |
2/4✓ Branch 2 → 3 taken 88062 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 88062 times.
✗ Branch 3 → 8 not taken.
|
88062 | std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override { return buildRule(ctx); } |
| 102 |
2/4✓ Branch 2 → 3 taken 16969 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 16969 times.
✗ Branch 3 → 8 not taken.
|
16969 | std::any visitValue(SpiceParser::ValueContext *ctx) override { return buildRule(ctx); } |
| 103 |
2/4✓ Branch 2 → 3 taken 15265 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 15265 times.
✗ Branch 3 → 8 not taken.
|
15265 | std::any visitFctCall(SpiceParser::FctCallContext *ctx) override { return buildRule(ctx); } |
| 104 |
2/4✓ Branch 2 → 3 taken 9 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 9 times.
✗ Branch 3 → 8 not taken.
|
9 | std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override { return buildRule(ctx); } |
| 105 |
2/4✓ Branch 2 → 3 taken 168 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 168 times.
✗ Branch 3 → 8 not taken.
|
168 | 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 2 → 3 taken 2 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 2 times.
✗ Branch 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 2 → 3 taken 15757 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 15757 times.
✗ Branch 3 → 8 not taken.
|
15757 | std::any visitConstant(SpiceParser::ConstantContext *ctx) override { return buildRule(ctx); } |
| 110 |
2/4✓ Branch 2 → 3 taken 47705 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 47705 times.
✗ Branch 3 → 8 not taken.
|
47705 | std::any visitDataType(SpiceParser::DataTypeContext *ctx) override { return buildRule(ctx); } |
| 111 |
2/4✓ Branch 2 → 3 taken 47705 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 47705 times.
✗ Branch 3 → 8 not taken.
|
47705 | std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override { return buildRule(ctx); } |
| 112 |
2/4✓ Branch 2 → 3 taken 18036 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 18036 times.
✗ Branch 3 → 8 not taken.
|
18036 | std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override { return buildRule(ctx); } |
| 113 |
2/4✓ Branch 2 → 3 taken 50 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 50 times.
✗ Branch 3 → 8 not taken.
|
50 | std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override { return buildRule(ctx); } |
| 114 |
2/4✓ Branch 2 → 3 taken 7834 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 7834 times.
✗ Branch 3 → 8 not taken.
|
7834 | std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override { return buildRule(ctx); } |
| 115 |
2/4✓ Branch 2 → 3 taken 1830 times.
✗ Branch 2 → 10 not taken.
✓ Branch 3 → 4 taken 1830 times.
✗ Branch 3 → 8 not taken.
|
1830 | 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 |