#include <parser.h>
Collaboration diagram for Parser:

Public Member Functions | |
| Parser (Tokenizer *) | |
| Array * | readArray () |
| Hash * | readHash () |
| Value * | readValue () |
Private Attributes | |
| Tokenizer * | tokenizer |
|
|
Definition at line 115 of file parser.cpp. 00115 : 00116 tokenizer(_tokenizer) 00117 { 00118 }
|
|
|
Definition at line 121 of file parser.cpp. References Tokenizer::nextToken(), Tokenizer::pushBack(), readValue(), and tokenizer. Referenced by readValue(). 00122 {
00123 Tokenizer::TokenType tok = tokenizer->nextToken();
00124 if (tok != Tokenizer::TokenBeginArray)
00125 {
00126 tokenizer->pushBack();
00127 return NULL;
00128 }
00129
00130 Array* array = new Array();
00131
00132 Value* v = readValue();
00133 while (v != NULL)
00134 {
00135 array->insert(array->end(), v);
00136 v = readValue();
00137 }
00138
00139 tok = tokenizer->nextToken();
00140 if (tok != Tokenizer::TokenEndArray)
00141 {
00142 tokenizer->pushBack();
00143 delete array;
00144 return NULL;
00145 }
00146
00147 return array;
00148 }
|
|
|
Definition at line 151 of file parser.cpp. References AssociativeArray::addValue(), Tokenizer::getNameValue(), Tokenizer::nextToken(), Tokenizer::pushBack(), readValue(), and tokenizer. Referenced by readValue(). 00152 {
00153 Tokenizer::TokenType tok = tokenizer->nextToken();
00154 if (tok != Tokenizer::TokenBeginGroup)
00155 {
00156 tokenizer->pushBack();
00157 return NULL;
00158 }
00159
00160 Hash* hash = new Hash();
00161
00162 tok = tokenizer->nextToken();
00163 while (tok != Tokenizer::TokenEndGroup)
00164 {
00165 if (tok != Tokenizer::TokenName)
00166 {
00167 tokenizer->pushBack();
00168 delete hash;
00169 return NULL;
00170 }
00171 string name = tokenizer->getNameValue();
00172
00173 Value* value = readValue();
00174 if (value == NULL)
00175 {
00176 delete hash;
00177 return NULL;
00178 }
00179
00180 hash->addValue(name, *value);
00181
00182 tok = tokenizer->nextToken();
00183 }
00184
00185 return hash;
00186 }
|
|
|
Definition at line 189 of file parser.cpp. References Tokenizer::getNameValue(), Tokenizer::getNumberValue(), Tokenizer::getStringValue(), Tokenizer::nextToken(), Tokenizer::pushBack(), readArray(), readHash(), and tokenizer. Referenced by StarDatabase::load(), DSODatabase::load(), LoadCelestiaMesh(), LoadSolarSystemObjects(), LoadVirtualTexture(), CommandParser::parseCommand(), readArray(), ReadAsterismList(), ReadCelestiaConfig(), ReadDestinationList(), ReadFavoritesList(), and readHash(). 00190 {
00191 Tokenizer::TokenType tok = tokenizer->nextToken();
00192 switch (tok)
00193 {
00194 case Tokenizer::TokenNumber:
00195 return new Value(tokenizer->getNumberValue());
00196
00197 case Tokenizer::TokenString:
00198 return new Value(tokenizer->getStringValue());
00199
00200 case Tokenizer::TokenName:
00201 if (tokenizer->getNameValue() == "false")
00202 return new Value(false);
00203 else if (tokenizer->getNameValue() == "true")
00204 return new Value(true);
00205 else
00206 {
00207 tokenizer->pushBack();
00208 return NULL;
00209 }
00210
00211 case Tokenizer::TokenBeginArray:
00212 tokenizer->pushBack();
00213 {
00214 Array* array = readArray();
00215 if (array == NULL)
00216 return NULL;
00217 else
00218 return new Value(array);
00219 }
00220
00221 case Tokenizer::TokenBeginGroup:
00222 tokenizer->pushBack();
00223 {
00224 Hash* hash = readHash();
00225 if (hash == NULL)
00226 return NULL;
00227 else
00228 return new Value(hash);
00229 }
00230
00231 default:
00232 tokenizer->pushBack();
00233 return NULL;
00234 }
00235 }
|
|
|
Definition at line 96 of file parser.h. Referenced by readArray(), readHash(), and readValue(). |
1.4.1