class ExprNode
Defined at line 49 of file ../../src/developer/debug/zxdb/expr/expr_node.h
Represents one node in the abstract syntax tree.
Public Methods
const AddressOfExprNode * AsAddressOf ()
Defined at line 51 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const ArrayAccessExprNode * AsArrayAccess ()
Defined at line 52 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const BinaryOpExprNode * AsBinaryOp ()
Defined at line 53 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const BlockExprNode * AsBlock ()
Defined at line 54 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const BreakExprNode * AsBreak ()
Defined at line 55 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const CastExprNode * AsCast ()
Defined at line 56 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const ConditionExprNode * AsCondition ()
Defined at line 57 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const DereferenceExprNode * AsDereference ()
Defined at line 58 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const FunctionCallExprNode * AsFunctionCall ()
Defined at line 59 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const IdentifierExprNode * AsIdentifier ()
Defined at line 60 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const LiteralExprNode * AsLiteral ()
Defined at line 61 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const LocalVarExprNode * AsLocalVar ()
Defined at line 62 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const LoopExprNode * AsLoop ()
Defined at line 63 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const MemberAccessExprNode * AsMemberAccess ()
Defined at line 64 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const SizeofExprNode * AsSizeof ()
Defined at line 65 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const TypeExprNode * AsType ()
Defined at line 66 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const UnaryOpExprNode * AsUnaryOp ()
Defined at line 67 of file ../../src/developer/debug/zxdb/expr/expr_node.h
const VariableDeclExprNode * AsVariableDecl ()
Defined at line 68 of file ../../src/developer/debug/zxdb/expr/expr_node.h
void EmitBytecode (VmStream & stream)
Appends the bytecode necessary to execute this node. The bytecode machine is a stack-based
machine.
Each ExprNode pushes temporary values it needs to the stack (usually by evaluating
sub-expressions that will leave these values on the stack). It must consume these values and
push exactly one result value on the stack when it is done. This value will be the "result" of
the expression. Even expressions with no results (like a loop) must push a value to the stack
(typically an empty ExprValue()) since the node calling it always expects one value. If the
calling node doesn't want a value, it should "drop" it after running the expression.
After the entire program is executed, the result should be a stack containing exactly one
ExprValue which is the result of evaluation.
void EmitBytecodeExpandRef (VmStream & stream)
Wrapper around EmitBytecode() that automatically expands C++ references to their values.
Used when callers know they want the effective value.
Defined at line 89 of file ../../src/developer/debug/zxdb/expr/expr_node.cc
void Print (std::ostream & out, int indent)
Dumps the tree to a stream with the given indent. Used for unit testing and debugging.
Protected Methods
void ExprNode ()
Defined at line 94 of file ../../src/developer/debug/zxdb/expr/expr_node.h
void ~ExprNode ()
Defined at line 95 of file ../../src/developer/debug/zxdb/expr/expr_node.h
Friends
class RefCountedThreadSafe