Esempio n. 1
0
function ParseEnum(TokenStream $it)
{
    $enum = new ASTEnum();
    $it->getToken(SyntaxMap::Keyword);
    $identifier = $it->getToken(SyntaxMap::Identifier);
    $enum->name = $identifier->value;
    //Verify that entity is not redeclared
    $key = strtolower($identifier->value);
    if (isset($it->types[$key])) {
        throw ParserException::redeclaredEnum($identifier);
    } else {
        $it->types[$key] = $enum;
        $it->enums[$key] = [];
    }
    $it->getToken(SyntaxMap::OpenBrace);
    while (!$it->typeAt(SyntaxMap::CloseBrace, 0)) {
        $enumValue = ParseEnumValue($it, $enum);
        $enum->values->add($enumValue);
    }
    $it->getAndMove();
    return $enum;
}