Classes | |
| struct | AnnexInfo |
| class | AST |
| class | Node |
| class | Expr |
| class | Decl |
| class | ValDecl |
| class | Ptrn |
| class | ErrorPtrn |
| class | IdPtrn |
| dbg: type More... | |
| class | GrpPtrn |
| If you have x1 x2 x3 x4: T it consists of 3 GrpPtrns and 1 IdPtrn while each GrpPtrn references the last IdPtrn. More... | |
| class | AliasPtrn |
| ptrn as id More... | |
| class | TuplePtrn |
| (ptrn_0, ..., ptrn_n-1), [ptrn_0, ..., ptrn_n-1], or {ptrn_0, ..., ptrn_n-1} More... | |
| class | ErrorExpr |
| class | HoleExpr |
| class | IdExpr |
| sym More... | |
| class | PrimaryExpr |
| tag More... | |
| class | LitExpr |
| tok:type More... | |
| class | DeclExpr |
decls e or e where decls if where is true. More... | |
| class | TypeExpr |
| Type level More... | |
| class | RuleExpr |
| Reform (type of a rule) Rule type. More... | |
| class | UnionExpr |
| t1 ∪ t2 More... | |
| class | InjExpr |
| value inj t1 ∪ t2 More... | |
| class | MatchExpr |
| class | ArrowExpr |
| dom -> codom More... | |
| class | PiExpr |
| One of: More... | |
| class | LamExpr |
| Wraps a LamDecl as Expr. More... | |
| class | AppExpr |
| callee arg More... | |
| class | RetExpr |
| ret ptrn = callee $ arg; body More... | |
| class | SigmaExpr |
| Just wraps TuplePtrn as Expr. More... | |
| class | TupleExpr |
| (elem_0, ..., elem_n-1) More... | |
| class | SeqExpr |
| «dbg: arity; body» or ‹dbg: arity; body› More... | |
| class | ExtractExpr |
| tuple#index More... | |
| class | InsertExpr |
| ins(tuple, index, value) More... | |
| class | UniqExpr |
| ⦃ expr ⦄ More... | |
| class | LetDecl |
| let ptrn: type = value; More... | |
| class | AxmDecl |
| axm ptrn: type = value; More... | |
| class | RecDecl |
| .rec dbg: type = body More... | |
| class | LamDecl |
| One of: More... | |
| class | CDecl |
| cfun dbg dom -> codom More... | |
| class | RuleDecl |
| rewrite rules rule (x:T, y:T) : x+y => y+x (when ); all meta variables have to be introduced More... | |
| class | Import |
| class | Module |
| class | Lexer |
| class | Parser |
| Parses Mim code as AST. More... | |
| class | Tok |
| class | DummyDecl |
| class | Scopes |
| class | Emitter |
| struct | S |
| struct | R |
| struct | AnnexInfo.sym |
| struct | AnnexInfo.id |
Typedefs | |
| template<class T> | |
| using | Ptr = fe::Arena::Ptr<const T> |
| template<class T> | |
| using | Ptrs = std::deque<Ptr<T>> |
| using | Dbgs = std::deque<Dbg> |
| using | Tag = Tok::Tag |
Enumerations | |
| enum class | Assoc { N , L , R } |
| Associativity of an infix expression. More... | |
| enum class | Prec |
| Expression precedences used by the parser and the dumper; ordered low to high. More... | |
Functions | |
| AST | load_plugins (World &, View< Sym >) |
| AST | load_plugins (World &w, View< std::string > plugins) |
| AST | load_plugin (World &w, Sym sym) |
| AST | load_plugin (World &w, const std::string &plugin) |
| constexpr Assoc | prec_assoc (Prec p) |
Associativity of precedence level p. | |
| constexpr bool | is_rassoc (Prec p) |
| constexpr bool | is_lassoc (Prec p) |
| constexpr bool | 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? | |
| static std::optional< nat_t > | isa_math_f (Emitter &e, const Def *type) |
If type is a math.F type of known precision/exponent, yields its bit width. | |
| static u64 | encode_f (Emitter &e, Loc loc, const Def *t, u64 bits) |
A float Tok stores its value as mim::f64 bits; re-encode them for the width of the annotated type t. | |
std::ostream operator | |
| std::ostream & | operator<< (std::ostream &os, Tok tok) |
Variables | |
| constexpr size_t | Look_Ahead = 2 |
| constexpr auto | 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) |
| struct mim::ast::AnnexInfo.sym |
| struct mim::ast::AnnexInfo.id |
| using mim::ast::Dbgs = std::deque<Dbg> |
| using mim::ast::Ptr = fe::Arena::Ptr<const T> |
| using mim::ast::Ptrs = std::deque<Ptr<T>> |
| using mim::ast::Tag = Tok::Tag |
|
strong |
|
strong |
A float Tok stores its value as mim::f64 bits; re-encode them for the width of the annotated type t.
Definition at line 194 of file emit.cpp.
References mim::error(), and isa_math_f().
Referenced by mim::ast::LitExpr::emit_().
|
constexpr |
Definition at line 56 of file tok.h.
References L, and prec_assoc().
|
constexpr |
If type is a math.F type of known precision/exponent, yields its bit width.
Note that libmim must not depend on the generated math plugin header, so lookup the Axm at runtime instead.
Definition at line 181 of file emit.cpp.
References mim::App::callee().
Referenced by encode_f().
Definition at line 1147 of file ast.h.
References load_plugin().
Definition at line 243 of file ast.cpp.
References mim::Flags::bootstrap, mim::World::driver(), and mim::Driver::flags().
Referenced by load_plugin(), and load_plugins().
Definition at line 1143 of file ast.h.
References load_plugins().
| std::ostream & mim::ast::operator<< | ( | std::ostream & | os, |
| Tok | tok ) |
Associativity of precedence level p.
Definition at line 45 of file tok.h.
References CODE, and MIM_PREC.
Referenced by is_lassoc(), and is_rassoc().
Should a Pratt parser reduce when the current binding power is curr and the infix operator has precedence op?
Definition at line 60 of file tok.h.
References is_rassoc().
|
constexpr |