10 #ifndef _EMBEDDED_RPC__ASTNODE_H_ 11 #define _EMBEDDED_RPC__ASTNODE_H_ 14 #include "smart_ptr.h" 123 virtual std::string
nodeName()
const {
return typeid(*this).name(); }
370 inline iterator begin() {
return m_children.begin(); }
371 inline iterator end() {
return m_children.end(); }
372 inline const_iterator begin()
const {
return m_children.begin(); }
373 inline const_iterator end()
const {
return m_children.end(); }
427 void dispatch(
AstNode *node,
int childIndex = 0);
435 void print(
AstNode *node,
int childIndex = 0);
447 void printIndent(
int indent)
const;
452 #endif // _EMBEDDED_RPC__ASTNODE_H_ AstNode * getChild(int index) const
This function return child node from node children.
Definition: AstNode.h:293
AstNode(const Token &token)
This function is constructor of AstNode class.
Definition: AstNode.h:55
Token & getToken()
This function returns token of this node.
Definition: AstNode.h:134
std::string getTokenString()
This function returns string representation of this node token value.
Definition: AstNode.h:164
void setParent(AstNode *newParent)
This function set parent for this node.
Definition: AstNode.h:181
Value * getAttribute(const std::string &name)
This function return attribute from AstNode attributes.
Definition: AstNode.cpp:107
Value *& operator[](const std::string &name)
Square brackets.
Definition: AstNode.h:260
void removeAttribute(const std::string &name)
This function remove attribute from AstNode attributes.
Definition: AstNode.cpp:125
size_t getIndexOfChild(AstNode *child)
This function return index of searched child node.
Definition: AstNode.cpp:142
void setToken(Token &token)
This function set token to this node.
Definition: AstNode.h:150
Token m_token
Definition: AstNode.h:384
child_list_t::const_iterator const_iterator
Definition: AstNode.h:42
AstNode * getParent() const
This function returns pointer to parent node.
Definition: AstNode.h:174
const Token & getToken() const
This function returns constant token of this node.
Definition: AstNode.h:143
attribute_map_t m_attributes
Definition: AstNode.h:386
virtual AstNode * clone() const
This function returns an exact duplicate of this object.
Definition: AstNode.h:116
child_list_t m_children
Definition: AstNode.h:387
virtual std::string nodeName() const
This function returns name of this node.
Definition: AstNode.h:123
const AstNode * operator[](int index) const
Square brackets.
Definition: AstNode.h:365
Homogeneous AST node class.
Definition: AstNode.h:35
Value * getValue()
This function returns token value.
Definition: Token.h:221
virtual std::string toString() const =0
Get Value type string representation.
child_list_t::iterator iterator
Definition: AstNode.h:41
std::string getDescription() const
This function returns string description of the node.
Definition: AstNode.cpp:186
size_t attributeCount() const
This function returns count of node attributes.
Definition: AstNode.h:191
void replaceChild(AstNode *original, AstNode *replacement)
This function replace child in AstNode tree.
Definition: AstNode.cpp:178
Abstract base class for values of arbitrary types.
Definition: Value.h:21
void setAttribute(const std::string &name, Value *node)
This function set attribute in AstNode attributes.
Definition: AstNode.cpp:120
size_t childCount() const
This function return count of children for current node.
Definition: AstNode.h:281
void reverseExpr()
This function replace children location in AstNode tree.
Definition: AstNode.cpp:161
AstNode *& operator[](int index)
Square brackets.
Definition: AstNode.h:351
AstNode & operator=(const AstNode &other)
Assignment operator.
Definition: AstNode.cpp:50
void appendChild(AstNode *node)
This function add given node to the end of children list for current AstNode.
Definition: AstNode.cpp:133
bool hasAttribute(const std::string &name) const
This function find attribute in AstNode attributes.
Definition: AstNode.cpp:101
Encapsulates all information about a token.
Definition: Token.h:60
virtual ~AstNode()
This function is destructor of AstNode class.
Definition: AstNode.cpp:80
AstNode * m_root
Definition: AstNode.h:438
void dispatch()
This function call for dispatch function.
Definition: AstNode.h:416
size_t getIndex()
This function return index of current node in parent's list of children.
Definition: AstNode.cpp:156
std::vector< AstNode * > child_list_t
Definition: AstNode.h:40
AstNode * m_parent
Definition: AstNode.h:385
Value * getTokenValue()
This function returns value of token of this node.
Definition: AstNode.h:157
Dumps an AST tree.
Definition: AstNode.h:393
std::map< std::string, Value * > attribute_map_t
Definition: AstNode.h:38
AstPrinter(AstNode *root)
This function is constructor of AstPrinter class.
Definition: AstNode.h:403
int m_depth
Definition: AstNode.h:439
AstNode(Token &token, AstNode *parent)
This function is constructor of AstNode class.
Definition: AstNode.h:73
std::stack< int > m_depthStack
Definition: AstNode.h:440