[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