00001
00011 #ifndef DECLPARSER_H_
00012 #define DECLPARSER_H_
00013
00014
00015 #include "impcomp/UnresOpSeq.h"
00016 #include "engine/EntityTemplate.h"
00017 #include "engine/BehaviorTemplate.h"
00018 #include "engine/BehaviorTemplateTable.h"
00019 #include "engine/EntityTemplateTable.h"
00020 #include "engine/EntityPool.h"
00021 #include "engine/System.h"
00022 #include "TokenSource.h"
00023
00024 namespace green
00025 {
00026
00036 class DeclParser
00037 {
00038 private:
00039
00040 SystemPtr sysPtr;
00041 BehaviorTemplateTablePtr behaviorPool;
00042 EntityTemplateTablePtr entityPool;
00043 MessageTemplateTablePtr messagePool;
00044 EntityPoolPtr entityInstances;
00045
00046 std::vector<ArgListPtr> sceneSpawnArgQueue;
00047 std::vector<std::string> sceneSpawnNameQueue;
00048
00049
00059 UnresOpSeqPtr parseCode(TokenIterator& curToken,int ifInit,
00060 VariableTableTemplatePtr varTableSet);
00061
00062
00069 void parseArgList(TokenIterator& curToken,ArgListPtr argOut);
00070
00078 void parseVarDecStmt(TokenIterator& curToken,VariableTableTemplatePtr varTable);
00079
00080
00088 void parseParameterElem(TokenIterator& curToken,VariableTableTemplatePtr varTable);
00089
00098 void parseParameterList(TokenIterator& curToken,VariableTableTemplatePtr argTable);
00099
00107 std::string parseEntityBehavior(TokenIterator& curToken,ArgListPtr behArgs);
00108
00109
00116 std::string parseClassific(TokenIterator& curToken);
00117
00118
00124 void parseEntity(TokenIterator& curToken);
00125
00126
00132 void parseBehavior(TokenIterator& curToken);
00133
00134
00140 void parseMessage(TokenIterator& curToken);
00141
00142
00148 void parseSceneEntity(TokenIterator& curToken);
00149
00155 void parseScene(TokenIterator& curToken);
00156
00157
00158
00159 public:
00166 DeclParser(SystemPtr systemIn,BehaviorTemplateTablePtr behTableIn,
00167 EntityTemplateTablePtr entityTableIn,MessageTemplateTablePtr msgTableIn,
00168 EntityPoolPtr entityInstancesIn);
00169
00170
00176 void parseFile(TokenIterator& curToken);
00177
00178
00179
00183 void parseComplete();
00184 };
00185
00186 }
00187
00188 #endif