summaryrefslogtreecommitdiff
path: root/parse/common.hpp
blob: 211fadeeeaaaca767113a96d8708e83eb0b4c9ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef PARSE_COMMON_HPP_INCLUDED
#define PARSEERROR_HPP_INCLUDED

#define GET_TOK(tok, lex) ((tok = lex.getToken()).type())
#define GET_CHECK_TOK(tok, lex, exp) do {\
    if((tok = lex.getToken()).type() != exp) \
            throw ParseError::Unexpected(tok, Token(exp));\
} while(0)
#define CHECK_TOK(tok, exp) do {\
    if(tok.type() != exp) \
            throw ParseError::Unexpected(tok, Token(exp));\
} while(0)

extern AST::Path   Parse_Path(TokenStream& lex, bool is_abs, bool generic_ok);
extern TypeRef     Parse_Type(TokenStream& lex);
extern AST::Expr   Parse_Expr(TokenStream& lex, bool const_only);
extern AST::Expr   Parse_ExprBlock(TokenStream& lex);

#endif // PARSE_COMMON_HPP_INCLUDED