X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Floader%2FParser.cpp;h=3f5f3446955ab8d78005912ad1d31df432c658e8;hb=a67f7e662c85b2b8d46f26a3c6e018b2df6eb318;hp=cba4f316f8d5251d1f878d7b2d612ce0f903655e;hpb=0285546b22f9e8f496ca6b1abffdd232647b6b6a;p=l2e.git diff --git a/src/loader/Parser.cpp b/src/loader/Parser.cpp index cba4f31..3f5f344 100644 --- a/src/loader/Parser.cpp +++ b/src/loader/Parser.cpp @@ -259,17 +259,33 @@ Literal *Parser::ParseArray() { Token probe(GetToken()); if (probe.type == Token::TYPE_NAME) { - vector values; - while (t.type != Token::BRACKET_CLOSE) { - PropertyList *value(ParsePropertyList()); - values.push_back(value); + t = GetToken(); + tok.Putback(t); + if (t.type == Token::ANGLE_BRACKET_OPEN) { + vector values; + while (t.type != Token::BRACKET_CLOSE) { + PropertyList *value(ParsePropertyList()); + values.push_back(value); - t = GetToken(); - if (t.type != Token::BRACKET_CLOSE && t.type != Token::COMMA) { - throw Error(file, tok.Line(), string("unexpected token ") + TokenTypeToString(t.type) + ", expected , or ]"); + t = GetToken(); + if (t.type != Token::BRACKET_CLOSE && t.type != Token::COMMA) { + throw Error(file, tok.Line(), string("unexpected token ") + TokenTypeToString(t.type) + ", expected , or ]"); + } + } + return new Literal(probe.str, values); + } else { + vector values; + while (t.type != Token::BRACKET_CLOSE) { + string value(ParseIdentifier()); + values.push_back(value); + + t = GetToken(); + if (t.type != Token::BRACKET_CLOSE && t.type != Token::COMMA) { + throw Error(file, tok.Line(), string("unexpected token ") + TokenTypeToString(t.type) + ", expected , or ]"); + } } + return new Literal(probe.str, values); } - return new Literal(probe.str, values); } else { tok.Putback(probe);