28#include "grammar.tab.hpp"
29#include "../utility/Defs.h"
41#undef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
68 mSourceFile(filename),
69 mLineNumber(linenumber),
98 out <<
"<Anonymous PNode of Type: " <<
GetType() <<
">" << flush;
146#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
147 cerr <<
"\tConstructing PNode of type [" << op <<
"]:[" <<
GetOpName() <<
"]\n";
200 if(
GetOp() == PEBL_FUNCTION)
211 else if(
GetOp() == PEBL_FUNCTIONS)
239#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
240 cout <<
" deleting OpNode: " << *
this << endl;
250 case PEBL_ADD:
return "PEBL_ADD";
251 case PEBL_AND:
return "PEBL_AND";
252 case PEBL_ARGLIST:
return "PEBL_ARGLIST";
253 case PEBL_ASSIGN:
return "PEBL_ASSIGN";
254 case PEBL_BREAK:
return "PEBL_BREAK";
255 case PEBL_COMMA:
return "PEBL_COMMA";
256 case PEBL_DIVIDE:
return "PEBL_DIVIDE";
257 case PEBL_DEFINE:
return "PEBL_DEFINE";
258 case PEBL_DOT:
return "PEBL_DOT";
259 case PEBL_ELSE:
return "PEBL_ELSE";
260 case PEBL_END:
return "PEBL_END";
261 case PEBL_EQ:
return "PEBL_EQ";
262 case PEBL_FUNCTION:
return "PEBL_FUNCTION";
263 case PEBL_FUNCTIONS:
return "PEBL_FUNCTIONS";
264 case PEBL_GE:
return "PEBL_GE";
265 case PEBL_GT:
return "PEBL_GT";
266 case PEBL_IF:
return "PEBL_IF";
267 case PEBL_IFELSE:
return "PEBL_IFELSE";
268 case PEBL_LAMBDAFUNCTION:
return "PEBL_LAMBDAFUNCTION";
269 case PEBL_LBRACE:
return "PEBL_LBRACE";
270 case PEBL_LBRACKET:
return "PEBL_LBRACKET";
271 case PEBL_LIBRARYFUNCTION:
return "PEBL_LIBRARYFUNCTION";
272 case PEBL_LISTHEAD:
return "PEBL_LISTHEAD";
273 case PEBL_LISTITEM:
return "PEBL_LISTITEM";
274 case PEBL_LE:
return "PEBL_LE";
275 case PEBL_LOOP:
return "PEBL_LOOP";
276 case PEBL_LPAREN:
return "PEBL_LPAREN";
277 case PEBL_LT:
return "PEBL_LT";
278 case PEBL_MULTIPLY:
return "PEBL_MULTIPLY";
279 case PEBL_NE:
return "PEBL_NE";
280 case PEBL_NEWLINE:
return "PEBL_NEWLINE";
281 case PEBL_NOT:
return "PEBL_NOT";
282 case PEBL_OR:
return "PEBL_OR";
283 case PEBL_POWER:
return "PEBL_POWER";
284 case PEBL_RBRACE:
return "PEBL_RBRACE";
285 case PEBL_RBRACKET:
return "PEBL_RBRACKET";
286 case PEBL_RETURN:
return "PEBL_RETURN";
287 case PEBL_RPAREN:
return "PEBL_RPAREN";
288 case PEBL_SEMI:
return "PEBL_SEMI";
289 case PEBL_START:
return "PEBL_START";
290 case PEBL_STATEMENTS:
return "PEBL_STATEMENTS";
291 case PEBL_SUBTRACT:
return "PEBL_SUBTRACT";
292 case PEBL_UMINUS:
return "PEBL_UMINUS";
293 case PEBL_VARLIST:
return "PEBL_VARLIST";
294 case PEBL_VARIABLEDATUM:
return "PEBL_VARIABLEDATUM";
295 case PEBL_WHILE:
return "PEBL_WHILE";
297 case PEBL_FLOAT:
return "PEBL_FLOAT";
298 case PEBL_INTEGER:
return "PEBL_INTEGER";
299 case PEBL_STRING:
return "PEBL_STRING";
300 case PEBL_SYMBOL:
return "PEBL_SYMBOL";
301 case PEBL_FUNCTIONNAME:
return "PEBL_FUNCTIONNAME";
305 case PEBL_AND_TAIL:
return "PEBL_AND_TAIL";
306 case PEBL_ADD_TAIL:
return "PEBL_ADD_TAIL";
307 case PEBL_ASSIGN_TAIL:
return "PEBL_ASSIGN_TAIL";
308 case PEBL_BREAK_TAIL :
return "PEBL_BREAK_TAIL";
309 case PEBL_DIVIDE_TAIL :
return "PEBL_DIVIDE_TAIL";
310 case PEBL_EQ_TAIL:
return "PEBL_EQ_TAIL";
311 case PEBL_GE_TAIL :
return "PEBL_GE_TAIL";
312 case PEBL_GT_TAIL :
return "PEBL_GT_TAIL";
313 case PEBL_IF_TAIL :
return "PEBL_IF_TAIL";
314 case PEBL_IF_TAIL2 :
return "PEBL_IF_TAIL2";
315 case PEBL_ELSE_TAIL :
return "PEBL_ELSE_TAIL";
316 case PEBL_LE_TAIL :
return "PEBL_LE_TAIL";
317 case PEBL_LISTITEM_TAIL :
return "PEBL_LISTITEM_TAIL";
318 case PEBL_LOOP_TAIL1 :
return "PEBL_LOOP_TAIL1";
319 case PEBL_LOOP_TAIL2:
return "PEBL_LOOP_TAIL2";
320 case PEBL_LT_TAIL:
return "PEBL_LT_TAIL";
321 case PEBL_MULTIPLY_TAIL:
return "PEBL_MULTIPLY_TAIL";
322 case PEBL_NE_TAIL:
return "PEBL_NE_TAIL";
323 case PEBL_NOT_TAIL:
return "PEBL_NOT_TAIL";
324 case PEBL_OR_TAIL:
return "PEBL_OR_TAIL";
325 case PEBL_POWER_TAIL:
return "PEBL_POWER_TAIL";
326 case PEBL_RETURN_TAIL:
return "PEBL_RETURN_TAIL";
327 case PEBL_SUBTRACT_TAIL:
return "PEBL_SUBTRACT_TAIL";
328 case PEBL_STATEMENTS_TAIL1:
return "PEBL_STATEMENTS_TAIL1";
329 case PEBL_STATEMENTS_TAIL2:
return "PEBL_STATEMENTS_TAIL2";
330 case PEBL_WHILE_TAIL:
return "PEBL_WHILE_TAIL";
331 case PEBL_WHILE_TAIL2:
return "PEBL_WHILE_TAIL2";
332 case PEBL_FUNCTION_TAIL1:
return "PEBL_FUNCTION_TAIL1";
333 case PEBL_FUNCTION_TAIL2:
return "PEBL_FUNCTION_TAIL2";
334 case PEBL_FUNCTION_TAIL_LIBFUNCTION:
return "PEBL_FUNCTION_TAIL_LIBFUNCTION";
337 default:
return "UNKNOWN PEBL OPERATION";
349 out <<
"<OpNode of Type: " <<
GetOpName() <<
">" <<flush;
376#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
377 cerr <<
"\tConstructing DataNode of variant value " << flush << value << endl;
399#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
400 cerr <<
"\tConstructing DataNode without value \n";
426#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
427 cerr <<
"\tConstructing DataNode of Integer value " << flush << ivalue << endl;
449#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
450 cerr <<
"\tConstructing DataNode of Float value " << flush << fvalue << endl;
457#ifdef VERBOSE_PNODE_CONSTRUCTION_MESSAGES
458 cout <<
" deleting DataNode: " << *
this << endl;
465 out <<
"<DataNode of Type: " <<
GetType() <<
" and Value: " <<
GetValue()<<
">" << flush;
ostream & operator<<(ostream &out, const PNode &node)
virtual std::ostream & SendToStream(std::ostream &out) const
DataNode(const Variant value, const std::string &filename, int linenumber)
const Variant & GetValue() const
virtual void DestroyChildren()
OpNode(int type, PNode *left, PNode *right, const std::string &filename, int linenumber)
PNode * mRight
A link to the right-child node.
std::string GetOpName() const
virtual std::ostream & SendToStream(std::ostream &out) const
PNode * mLeft
A link to the left-child node.
OpNode operator=(const OpNode &op)
virtual void DestroyFunctionTree()
virtual void DestroyChildren()
virtual ~PNode()
The Standard destructor.
int GetLineNumber() const
void SetFileInfo(const std::string &filename, int linenumber)
std::string mSourceFile
Source file of origin.
virtual std::ostream & SendToStream(std::ostream &out) const
int mLineNumber
Closest Line number of origin.
void SetFunctionName(const std::string &funcname)
PNODE_TYPE GetType() const
Access mType data.
std::string GetFilename() const
PNode()
The Standard constructor.