[Avida-SVN] r1776 - development/source/script
brysonda at myxo.css.msu.edu
brysonda at myxo.css.msu.edu
Tue Jul 10 10:27:15 PDT 2007
Author: brysonda
Date: 2007-07-10 13:27:15 -0400 (Tue, 10 Jul 2007)
New Revision: 1776
Modified:
development/source/script/ASTree.cc
development/source/script/ASTree.h
development/source/script/cParser.cc
Log:
When in the course of human events it becomes necessary to create some cASTNodes...
Modified: development/source/script/ASTree.cc
===================================================================
--- development/source/script/ASTree.cc 2007-07-10 17:12:10 UTC (rev 1775)
+++ development/source/script/ASTree.cc 2007-07-10 17:27:15 UTC (rev 1776)
@@ -45,3 +45,8 @@
}
+void cASTVariableReference::Accept(cASTVisitor& visitor)
+{
+
+}
+
Modified: development/source/script/ASTree.h
===================================================================
--- development/source/script/ASTree.h 2007-07-10 17:12:10 UTC (rev 1775)
+++ development/source/script/ASTree.h 2007-07-10 17:27:15 UTC (rev 1776)
@@ -59,7 +59,8 @@
cASTNode* m_expr;
public:
- cASTExpressionUnary(ASToken_t op) : m_op(op), m_expr(NULL) { ; }
+ cASTExpressionUnary(ASToken_t op, cASTNode* e) : m_op(op), m_expr(e) { ; }
+ ~cASTExpressionUnary() { delete m_expr; }
void SetExpression(cASTNode* expr) { m_expr = expr; }
@@ -74,7 +75,8 @@
cASTNode* m_right;
public:
- cASTExpressionBinary(ASToken_t op) : m_op(op), m_left(NULL), m_right(NULL) { ; }
+ cASTExpressionBinary(ASToken_t op, cASTNode* l, cASTNode* r) : m_op(op), m_left(l), m_right(r) { ; }
+ ~cASTExpressionBinary() { delete m_left; delete m_right; }
void SetLeft(cASTNode* left) { m_left = left; }
void SetRight(cASTNode* right) { m_right = right; }
@@ -106,4 +108,15 @@
};
+class cASTVariableReference : public cASTNode
+{
+private:
+
+public:
+ cASTVariableReference() { ; }
+
+ void Accept(cASTVisitor& visitor);
+};
+
+
#endif
Modified: development/source/script/cParser.cc
===================================================================
--- development/source/script/cParser.cc 2007-07-10 17:12:10 UTC (rev 1775)
+++ development/source/script/cParser.cc 2007-07-10 17:27:15 UTC (rev 1776)
@@ -371,9 +371,10 @@
switch (currentToken()) {
case ARR_RANGE:
case ARR_EXPAN:
+ ASToken_t op = currentToken();
nextToken();
r = parseExprP1();
- // set l == new expr
+ l = new cASTExpressionBinary(op, l, r);
break;
default:
@@ -393,9 +394,10 @@
switch (currentToken()) {
case OP_LOGIC_AND:
case OP_LOGIC_OR:
+ ASToken_t op = currentToken();
nextToken();
r = parseExprP2();
- // set l == new expr
+ l = new cASTExpressionBinary(op, l, r);
break;
default:
@@ -415,9 +417,10 @@
switch (currentToken()) {
case OP_BIT_AND:
case OP_BIT_OR:
+ ASToken_t op = currentToken();
nextToken();
r = parseExprP3();
- // set l == new expr
+ l = new cASTExpressionBinary(op, l, r);
break;
default:
@@ -441,9 +444,10 @@
case OP_LT:
case OP_GT:
case OP_NEQ:
+ ASToken_t op = currentToken();
nextToken();
r = parseExprP4();
- // set l == new expr
+ l = new cASTExpressionBinary(op, l, r);
break;
default:
@@ -463,9 +467,10 @@
switch (currentToken()) {
case OP_ADD:
case OP_SUB:
+ ASToken_t op = currentToken();
nextToken();
r = parseExprP5();
- // set l == new expr
+ l = new cASTExpressionBinary(op, l, r);
break;
default:
@@ -486,9 +491,10 @@
case OP_MUL:
case OP_DIV:
case OP_MOD:
+ ASToken_t op = currentToken();
nextToken();
r = parseExprP6();
- // set l == new expr
+ l = new cASTExpressionBinary(op, l, r);
break;
default:
@@ -519,9 +525,9 @@
PARSE_UNEXPECT();
return expr;
}
- // @todo - expr = ;
+ expr = new cASTFunctionCall(); // @todo
} else {
- // @todo - expr = ;
+ expr = new cASTVariableReference(); // @todo
}
break;
case PREC_OPEN:
@@ -549,7 +555,8 @@
case OP_BIT_NOT:
case OP_LOGIC_NOT:
case OP_SUB:
- expr = parseExpression();
+ ASToken_t op = currentToken();
+ expr = new cASTExpressionUnary(op, parseExpression());
nextToken();
return expr;
More information about the Avida-cvs
mailing list