Bash++
Bash++ compiler internal documentation
ContextExpectations.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <stack>
10
40 bool can_take_primitive = true;
41 bool can_take_object = false;
42};
43
53 private:
54 std::stack<ContextExpectations> stack;
55 static constexpr ContextExpectations default_expectations = {true, false};
56 public:
57 void push(const ContextExpectations& expectations) {
58 stack.push(expectations);
59 }
60
61 void push(bool can_take_primitive, bool can_take_object) {
62 stack.push({can_take_primitive, can_take_object});
63 }
64
65 void pop() {
66 if (!stack.empty()) stack.pop();
67 }
68
70 if (stack.empty()) return default_expectations;
71 return stack.top();
72 }
73
74 bool canTakePrimitive() const {
76 return stack.top().can_take_primitive;
77 }
78
79 bool canTakeObject() const {
80 if (stack.empty()) return default_expectations.can_take_object;
81 return stack.top().can_take_object;
82 }
83};
A stack to manage ContextExpectations during AST traversal.
Definition ContextExpectations.h:52
void push(const ContextExpectations &expectations)
Definition ContextExpectations.h:57
bool canTakeObject() const
Definition ContextExpectations.h:79
bool canTakePrimitive() const
Definition ContextExpectations.h:74
std::stack< ContextExpectations > stack
Definition ContextExpectations.h:54
ContextExpectations top() const
Definition ContextExpectations.h:69
void pop()
Definition ContextExpectations.h:65
static constexpr ContextExpectations default_expectations
Definition ContextExpectations.h:55
void push(bool can_take_primitive, bool can_take_object)
Definition ContextExpectations.h:61
Represents the expectations for the current parsing context.
Definition ContextExpectations.h:39
bool can_take_primitive
Definition ContextExpectations.h:40
bool can_take_object
Definition ContextExpectations.h:41