Yume
Classes | Namespaces | Typedefs | Variables
parser.hpp File Reference
#include "ast/ast.hpp"
#include "atom.hpp"
#include "diagnostic/errors.hpp"
#include "diagnostic/notes.hpp"
#include "diagnostic/source_location.hpp"
#include "token.hpp"
#include "util.hpp"
#include <array>
#include <cctype>
#include <cstddef>
#include <memory>
#include <optional>
#include <span>
#include <stdexcept>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
Include dependency graph for parser.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  yume::ast::TokenIterator
 An iterator-like holding Tokens, used when parsing. More...
 
class  yume::ast::parser::TokenRange
 
struct  yume::ast::parser::Parser
 
struct  yume::ast::parser::Parser::FnArg
 

Namespaces

namespace  yume
 
namespace  yume::ast
 
namespace  yume::ast::parser
 

Typedefs

using yume::ast::VectorTokenIterator = vector< Token >::iterator
 
using yume::ast::parser::TokenAtom = std::pair< Token::Type, Atom >
 

Variables

static constexpr auto yume::ast::parser::Word = Token::Type::Word
 
static constexpr auto yume::ast::parser::Symbol = Token::Type::Symbol
 
static const TokenAtom yume::ast::parser::KWD_IF = {Word, "if"_a}
 
static const TokenAtom yume::ast::parser::KWD_IS = {Word, "is"_a}
 
static const TokenAtom yume::ast::parser::KWD_DEF = {Word, "def"_a}
 
static const TokenAtom yume::ast::parser::KWD_END = {Word, "end"_a}
 
static const TokenAtom yume::ast::parser::KWD_LET = {Word, "let"_a}
 
static const TokenAtom yume::ast::parser::KWD_PTR = {Word, "ptr"_a}
 
static const TokenAtom yume::ast::parser::KWD_MUT = {Word, "mut"_a}
 
static const TokenAtom yume::ast::parser::KWD_REF = {Word, "ref"_a}
 
static const TokenAtom yume::ast::parser::KWD_NEW = {Word, "new"_a}
 
static const TokenAtom yume::ast::parser::KWD_ELSE = {Word, "else"_a}
 
static const TokenAtom yume::ast::parser::KWD_SELF_ITEM = {Word, "self"_a}
 
static const TokenAtom yume::ast::parser::KWD_SELF_TYPE = {Word, "Self"_a}
 
static const TokenAtom yume::ast::parser::KWD_THEN = {Word, "then"_a}
 
static const TokenAtom yume::ast::parser::KWD_TRUE = {Word, "true"_a}
 
static const TokenAtom yume::ast::parser::KWD_TYPE = {Word, "type"_a}
 
static const TokenAtom yume::ast::parser::KWD_FALSE = {Word, "false"_a}
 
static const TokenAtom yume::ast::parser::KWD_WHILE = {Word, "while"_a}
 
static const TokenAtom yume::ast::parser::KWD_CONST = {Word, "const"_a}
 
static const TokenAtom yume::ast::parser::KWD_STRUCT = {Word, "struct"_a}
 
static const TokenAtom yume::ast::parser::KWD_RETURN = {Word, "return"_a}
 
static const TokenAtom yume::ast::parser::KWD_ABSTRACT = {Word, "abstract"_a}
 
static const TokenAtom yume::ast::parser::KWD_INTERFACE = {Word, "interface"_a}
 
static const TokenAtom yume::ast::parser::KWD_EXTERN = {Word, "__extern__"_a}
 
static const TokenAtom yume::ast::parser::KWD_VARARGS = {Word, "__varargs__"_a}
 
static const TokenAtom yume::ast::parser::KWD_PRIMITIVE = {Word, "__primitive__"_a}
 
static const TokenAtom yume::ast::parser::SYM_COMMA = {Symbol, ","_a}
 
static const TokenAtom yume::ast::parser::SYM_DOT = {Symbol, "."_a}
 
static const TokenAtom yume::ast::parser::SYM_EQ = {Symbol, "="_a}
 
static const TokenAtom yume::ast::parser::SYM_AT = {Symbol, "@"_a}
 
static const TokenAtom yume::ast::parser::SYM_LPAREN = {Symbol, "("_a}
 
static const TokenAtom yume::ast::parser::SYM_RPAREN = {Symbol, ")"_a}
 
static const TokenAtom yume::ast::parser::SYM_LBRACKET = {Symbol, "["_a}
 
static const TokenAtom yume::ast::parser::SYM_RBRACKET = {Symbol, "]"_a}
 
static const TokenAtom yume::ast::parser::SYM_LBRACE = {Symbol, "{"_a}
 
static const TokenAtom yume::ast::parser::SYM_RBRACE = {Symbol, "}"_a}
 
static const TokenAtom yume::ast::parser::SYM_EQ_EQ = {Symbol, "=="_a}
 
static const TokenAtom yume::ast::parser::SYM_NEQ = {Symbol, "!="_a}
 
static const TokenAtom yume::ast::parser::SYM_AND = {Symbol, "&"_a}
 
static const TokenAtom yume::ast::parser::SYM_LT = {Symbol, "<"_a}
 
static const TokenAtom yume::ast::parser::SYM_GT = {Symbol, ">"_a}
 
static const TokenAtom yume::ast::parser::SYM_PLUS = {Symbol, "+"_a}
 
static const TokenAtom yume::ast::parser::SYM_MINUS = {Symbol, "-"_a}
 
static const TokenAtom yume::ast::parser::SYM_PERCENT = {Symbol, "%"_a}
 
static const TokenAtom yume::ast::parser::SYM_SLASH_SLASH = {Symbol, "//"_a}
 
static const TokenAtom yume::ast::parser::SYM_STAR = {Symbol, "*"_a}
 
static const TokenAtom yume::ast::parser::SYM_BANG = {Symbol, "!"_a}
 
static const TokenAtom yume::ast::parser::SYM_COLON = {Symbol, ":"_a}
 
static const TokenAtom yume::ast::parser::SYM_COLON_COLON = {Symbol, "::"_a}
 
static const TokenAtom yume::ast::parser::SYM_OR_OR = {Symbol, "||"_a}
 
static const TokenAtom yume::ast::parser::SYM_AND_AND = {Symbol, "&&"_a}
 
static const TokenAtom yume::ast::parser::SYM_ARROW = {Symbol, "->"_a}
 
static const TokenAtom yume::ast::parser::SYM_DOLLAR = {Symbol, "$"_a}