[Avida-SVN] r1752 - in development: Avida.xcodeproj source/script

brysonda at myxo.css.msu.edu brysonda at myxo.css.msu.edu
Thu Jul 5 12:06:47 PDT 2007


Author: brysonda
Date: 2007-07-05 15:06:47 -0400 (Thu, 05 Jul 2007)
New Revision: 1752

Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/script/cParser.cc
   development/source/script/cParser.h
Log:
AS: CallExpression.

Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2007-07-05 17:59:43 UTC (rev 1751)
+++ development/Avida.xcodeproj/project.pbxproj	2007-07-05 19:06:47 UTC (rev 1752)
@@ -208,14 +208,14 @@
 			isa = PBXContainerItemProxy;
 			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 7023EC320C0A426900362B9C /* avida-core */;
+			remoteGlobalIDString = 7023EC320C0A426900362B9C;
 			remoteInfo = "avida-core";
 		};
 		56F555DC0C3B370100E2E929 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 70AA941809D486AE006A24C8 /* tcmalloc */;
+			remoteGlobalIDString = 70AA941809D486AE006A24C8;
 			remoteInfo = tcmalloc;
 		};
 		7023ECA60C0A436000362B9C /* PBXContainerItemProxy */ = {
@@ -350,7 +350,7 @@
 		565121C60C3B055F009CBD3F /* cCoreView_Info.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cCoreView_Info.cc; sourceTree = "<group>"; };
 		565121C70C3B055F009CBD3F /* cCoreView_Info.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cCoreView_Info.h; sourceTree = "<group>"; };
 		565121C80C3B055F009CBD3F /* LAYOUT */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = LAYOUT; sourceTree = "<group>"; };
-		56F555D00C3B364E00E2E929 /* New Text Viewer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "New Text Viewer"; path = "build/Development/New Text Viewer"; sourceTree = "<group>"; };
+		56F555D00C3B364E00E2E929 /* New Text Viewer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "New Text Viewer"; sourceTree = BUILT_PRODUCTS_DIR; };
 		56F555DF0C3B402A00E2E929 /* cDriver_TextViewer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cDriver_TextViewer.cc; sourceTree = "<group>"; };
 		56F555E00C3B402A00E2E929 /* cDriver_TextViewer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cDriver_TextViewer.h; sourceTree = "<group>"; };
 		56F555E10C3B402A00E2E929 /* cTextViewerManager.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cTextViewerManager.cc; sourceTree = "<group>"; };

Modified: development/source/script/cParser.cc
===================================================================
--- development/source/script/cParser.cc	2007-07-05 17:59:43 UTC (rev 1751)
+++ development/source/script/cParser.cc	2007-07-05 19:06:47 UTC (rev 1752)
@@ -284,8 +284,49 @@
 
 cASTNode* cParser::parseCallExpression()
 {
-  // @todo
-  return NULL;
+  cASTNode* ce = NULL;
+  
+  bool eoe = false;
+  while (!eoe) {
+    switch (currentToken()) {
+      case DOT:
+        if (nextToken() != ID) {
+          PARSE_UNEXPECT();
+          return ce;
+        }
+        break;
+      case PREC_OPEN:
+        nextToken();
+        parseArgumentList();
+        if (nextToken() != PREC_CLOSE) {
+          PARSE_UNEXPECT();
+          return ce;   
+        }
+        switch (nextToken()) {
+          case IDX_OPEN:
+            while (currentToken() == IDX_OPEN) {
+              parseIndexExpression();
+            }
+            break;
+          case DOT:
+            continue;
+
+          default:
+            eoe = true;
+        }
+        break;
+      case IDX_OPEN:
+        while (currentToken() == IDX_OPEN) {
+          parseIndexExpression();
+        }
+
+      default:
+        PARSE_UNEXPECT();
+        return ce;
+    }
+  }
+    
+  return ce;
 }
 
 cASTNode* cParser::parseCodeBlock(bool& loose)
@@ -421,6 +462,31 @@
   return fd;
 }
 
+cASTNode* cParser::parseIDStatement()
+{
+  cASTNode* is = NULL;
+  
+  switch (nextToken()) {
+    case ASSIGN:
+      parseAssignment();
+      break;
+    case DOT:
+    case IDX_OPEN:
+    case PREC_OPEN:
+      parseCallExpression();
+      break;
+    case REF:
+      parseVarDeclare();
+      break;
+      
+    default:
+      PARSE_UNEXPECT();
+      break;
+  }      
+  
+  return is;
+}
+
 cASTNode* cParser::parseIfStatement()
 {
   cASTNode* is = NULL;
@@ -454,29 +520,10 @@
   return is;
 }
 
-cASTNode* cParser::parseIDStatement()
+cASTNode* cParser::parseIndexExpression()
 {
-  cASTNode* is = NULL;
-  
-  switch (nextToken()) {
-    case ASSIGN:
-      parseAssignment();
-      break;
-    case DOT:
-    case IDX_OPEN:
-    case PREC_OPEN:
-      parseCallExpression();
-      break;
-    case REF:
-      parseVarDeclare();
-      break;
-      
-    default:
-      PARSE_UNEXPECT();
-      break;
-  }      
-      
-  return is;
+  // @todo
+  return NULL;
 }
 
 cASTNode* cParser::parseLooseBlock()

Modified: development/source/script/cParser.h
===================================================================
--- development/source/script/cParser.h	2007-07-05 17:59:43 UTC (rev 1751)
+++ development/source/script/cParser.h	2007-07-05 19:06:47 UTC (rev 1752)
@@ -93,6 +93,7 @@
   cASTNode* parseFunctionHeader(bool declare = true);
   cASTNode* parseIDStatement();
   cASTNode* parseIfStatement();
+  cASTNode* parseIndexExpression();
   cASTNode* parseLooseBlock();
   cASTNode* parseRefStatement();
   cASTNode* parseReturnStatement();




More information about the Avida-cvs mailing list