Esempio n. 1
0
function ParseEnumValue(TokenStream $it, ASTEnum $enum)
{
    $enumValue = new ASTEnumValue();
    $enumValue->annotations = ParseAnnotations($it);
    $identifier = $it->getToken([SyntaxMap::Identifier, SyntaxMap::DataType]);
    $enumValue->name = $identifier->value;
    //Verify if entity is already declared
    $entityKey = strtolower($enum->name);
    $key = strtolower($identifier->value);
    if (isset($it->enums[$entityKey][$key])) {
        throw ParserException::redeclaredEnumValue($enum, $identifier);
    } else {
        $it->enums[$entityKey][$key] = [];
    }
    if ($it->typeAt(SyntaxMap::AssignOp, 0)) {
        $it->getAndMove();
        $val = $it->getToken([SyntaxMap::String, SyntaxMap::Number]);
        $enumValue->value = $val->getValue();
    }
    $it->getToken(SyntaxMap::Semicolon);
    return $enumValue;
}