#include <optional>#include <string_view>#include <utility>#include <fe/assert.h>#include <fe/format.h>#include "mim/util/dbg.h"Go to the source code of this file.
Classes | |
| class | mim::ast::Tok |
Namespaces | |
| namespace | mim |
| namespace | mim::ast |
Macros | |
| #define | CODE(name, ...) |
| #define | CODE(name, assoc) |
| #define | MIM_KEY(m) |
| #define | CODE(t, str) |
| #define | MIM_TOK(m) |
| #define | MIM_SUBST(m) |
| #define | CODE(str, t) |
| #define | CODE(t, str) |
| #define | CODE(str, t) |
| #define | CODE(t, str, prec) |
| #define | CODE(t, str, prec) |
Precedence Table | |
X-macro listing all expression precedences from lowest to highest as m(name, assoc).
| |
| #define | MIM_PREC(m) |
Infix Operator Table | |
X-macros listing all infix operators as m(tag, str, prec). | |
| #define | MIM_INFIX_SUGAR(m) |
| a str b is sugar for `str (a, b) ; what `str means is up to whatever the user binds it to. | |
| #define | MIM_INFIX_CORE(m) |
| These have a meaning of their own; InfixExpr::emit_ dispatches on the tag. | |
| #define | MIM_INFIX(m) |
Enumerations | |
| enum class | mim::ast::Assoc { mim::ast::N , mim::ast::L , mim::ast::R } |
| Associativity of an infix expression. More... | |
| enum class | mim::ast::Prec |
| Expression precedences used by the parser and the dumper; ordered low to high. More... | |
Functions | |
| constexpr Assoc | mim::ast::prec_assoc (Prec p) |
Associativity of precedence level p. | |
| constexpr bool | mim::ast::is_rassoc (Prec p) |
| constexpr bool | mim::ast::is_lassoc (Prec p) |
| constexpr bool | mim::ast::should_reduce (Prec curr, Prec op) |
Should a Pratt parser reduce when the current binding power is curr and the infix operator has precedence op? | |
Variables | |
| constexpr auto | mim::ast::Num_Keys = size_t(0) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) + size_t(1) |
| constexpr auto | mim::ast::Num_Subst = size_t(0) + size_t(1) + size_t(1) + size_t(1) |
| #define CODE | ( | name, | |
| assoc ) |
| #define CODE | ( | name, | |
| ... ) |
Definition at line 51 of file tok.h.
Referenced by mim::Driver::Driver(), mim::ast::Tok::infix_prec(), mim::ast::Tok::infix_sym(), mim::ast::Tok::is_key(), mim::Def::judge(), mim::Def::node_name(), mim::ast::prec_assoc(), and mim::ast::Tok::tag2str().
| #define CODE | ( | t, | |
| str, | |||
| prec ) |
| #define CODE | ( | t, | |
| str, | |||
| prec ) |
| #define MIM_INFIX | ( | m | ) |
Definition at line 213 of file tok.h.
Referenced by mim::ast::Tok::infix_prec().
| #define MIM_INFIX_CORE | ( | m | ) |
| #define MIM_INFIX_SUGAR | ( | m | ) |
a str b is sugar for `str (a, b) ; what `str means is up to whatever the user binds it to.
Definition at line 189 of file tok.h.
Referenced by mim::ast::Tok::infix_sym().
| #define MIM_KEY | ( | m | ) |
Definition at line 75 of file tok.h.
Referenced by mim::Driver::Driver(), and mim::ast::Tok::tag2str().
| #define MIM_PREC | ( | m | ) |
Definition at line 26 of file tok.h.
Referenced by mim::ast::prec_assoc().
| #define MIM_SUBST | ( | m | ) |
Definition at line 216 of file tok.h.
Referenced by mim::Driver::Driver(), and mim::ast::Tok::is_key().
| #define MIM_TOK | ( | m | ) |
Definition at line 128 of file tok.h.
Referenced by mim::ast::Tok::tag2str().