[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