/* SI 413 Fall 2011 * C++ header file for the Frame class * Supports lexical scope */ #ifndef FRAME_HPP #define FRAME_HPP #include <iostream> #include <map> #include <string> using namespace std; #include "value.hpp" /* This class represents a lexical frame. */ class Frame { private: map<string,Value> bindings; Frame* parent; public: // Constructor takes a pointer to the parent frame. // Symbol table will initially be empty. Frame (Frame* p = NULL) :parent(p) { } // Returns the Value bound to the given name. Value lookup(string name); // Creates a new name-value binding void bind(string name, Value val = Value()); // Re-defines the value bound to the given name. void rebind(string name, Value val); }; #endif // FRAME_HPP