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