Goose  resolver.h at [70d4f4647b]

File bs/parser/resolver.h artifact 49dae5e03b part of check-in 70d4f4647b


#ifndef EMPATHY_PARSER_RESOLVER_H
#define EMPATHY_PARSER_RESOLVER_H

#include "parser.h"

namespace empathy::parser
{
    class Resolver
    {
        public:
            Resolver( const ptr< Lexer >& lexer, const sema::Context& c ) :
                m_lexer( lexer ),
                m_context( c )
            {}

            bool eos() const;

            optional< ir::Term > consume();
            optional< ir::Term > consumeUnresolved();
            optional< ir::Term > lookAhead( size_t distance = 0 );
            optional< ir::Term > lookAheadUnresolved( size_t distance = 0 );

        private:
            ir::Term resolve( const ir::Term& t ) const;

            ptr< Lexer > m_lexer;
            sema::Context m_context;
            deque< ir::Term > m_lookAheadCache;
    };
}

#endif