Serenity Operating System
1/*
2 * Copyright (c) 2020, the SerenityOS developers.
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include "Forward.h"
10
11namespace Shell::AST {
12
13class NodeVisitor {
14public:
15 virtual void visit(const AST::PathRedirectionNode*);
16 virtual void visit(const AST::And*);
17 virtual void visit(const AST::ListConcatenate*);
18 virtual void visit(const AST::Background*);
19 virtual void visit(const AST::BarewordLiteral*);
20 virtual void visit(const AST::BraceExpansion*);
21 virtual void visit(const AST::CastToCommand*);
22 virtual void visit(const AST::CastToList*);
23 virtual void visit(const AST::CloseFdRedirection*);
24 virtual void visit(const AST::CommandLiteral*);
25 virtual void visit(const AST::Comment*);
26 virtual void visit(const AST::ContinuationControl*);
27 virtual void visit(const AST::DynamicEvaluate*);
28 virtual void visit(const AST::DoubleQuotedString*);
29 virtual void visit(const AST::Fd2FdRedirection*);
30 virtual void visit(const AST::FunctionDeclaration*);
31 virtual void visit(const AST::ForLoop*);
32 virtual void visit(const AST::Glob*);
33 virtual void visit(const AST::Heredoc*);
34 virtual void visit(const AST::HistoryEvent*);
35 virtual void visit(const AST::Execute*);
36 virtual void visit(const AST::IfCond*);
37 virtual void visit(const AST::ImmediateExpression*);
38 virtual void visit(const AST::Join*);
39 virtual void visit(const AST::MatchExpr*);
40 virtual void visit(const AST::Or*);
41 virtual void visit(const AST::Pipe*);
42 virtual void visit(const AST::Range*);
43 virtual void visit(const AST::ReadRedirection*);
44 virtual void visit(const AST::ReadWriteRedirection*);
45 virtual void visit(const AST::Sequence*);
46 virtual void visit(const AST::Subshell*);
47 virtual void visit(const AST::Slice*);
48 virtual void visit(const AST::SimpleVariable*);
49 virtual void visit(const AST::SpecialVariable*);
50 virtual void visit(const AST::Juxtaposition*);
51 virtual void visit(const AST::StringLiteral*);
52 virtual void visit(const AST::StringPartCompose*);
53 virtual void visit(const AST::SyntaxError*);
54 virtual void visit(const AST::SyntheticNode*);
55 virtual void visit(const AST::Tilde*);
56 virtual void visit(const AST::VariableDeclarations*);
57 virtual void visit(const AST::WriteAppendRedirection*);
58 virtual void visit(const AST::WriteRedirection*);
59
60protected:
61 virtual ~NodeVisitor() = default;
62};
63
64}