Listing 1: The declarator parsing function


string parser::declarator()
    {
    token::category tc = input.current().kind();
    if (tc == token::AMPERSAND || tc == token::STAR
    || tc == token::NAME)
        {
        string p = ptr_operator();
        return declarator() + p;
        }
    else
        return direct_declarator();
    }