MCPcopy Create free account
hub / github.com/devosoft/avida / parseArrayUnpack

Method parseArrayUnpack

avida-core/source/script/cParser.cc:272–309  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

270
271
272cASTNode* cParser::parseArrayUnpack()
273{
274 PARSE_TRACE("parseArrayUnpack");
275
276 if (nextToken() != TOKEN(ID)) PARSE_UNEXPECT();
277
278 Apto::SmartPtr<cASTUnpackTarget> ut(new cASTUnpackTarget(FILEPOS));
279 (*ut).AddVar(currentText());
280
281 while (nextToken()) {
282 if (currentToken() == TOKEN(COMMA)) {
283 nextToken();
284 if (currentToken() == TOKEN(ID)) {
285 (*ut).AddVar(currentText());
286 continue;
287 } else if (currentToken() == TOKEN(ARR_WILD)) {
288 (*ut).SetLastWild();
289 break;
290 } else {
291 PARSE_ERROR(UNEXPECTED_TOKEN);
292 break;
293 }
294 } else if (currentToken() == TOKEN(ARR_WILD)) {
295 (*ut).SetLastNamed();
296 break;
297 } else {
298 PARSE_UNEXPECT();
299 }
300 }
301
302 if (nextToken() != TOKEN(ARR_CLOSE)) PARSE_UNEXPECT();
303 if (nextToken() != TOKEN(ASSIGN)) PARSE_UNEXPECT();
304 nextToken(); // consume '='
305
306 (*ut).SetExpression(parseExpression());
307
308 return ut.Release();
309}
310
311cASTArgumentList* cParser::parseArgumentList()
312{

Callers

nothing calls this directly

Calls 5

AddVarMethod · 0.80
SetLastWildMethod · 0.80
SetLastNamedMethod · 0.80
ReleaseMethod · 0.80
SetExpressionMethod · 0.45

Tested by

no test coverage detected