Goose  Artifact [49dae5e03b]

Artifact 49dae5e03b45a52dd83492dd1b9f88abc5f81745128a8e3db81230225f25d081:

  • File bs/parser/resolver.h — part of check-in [70d4f4647b] at 2019-01-13 21:16:10 on branch trunk — Parser: remove the context object and directly use sema::Context. (user: achavasse size: 801)

#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