FE 0.6.0
A header-only C++ library for writing frontends
|
Namespaces | |
namespace | format |
namespace | utf8 |
Classes | |
class | Arena |
An arena pre-allocates so-called pages of size Arena::page_size_. More... | |
struct | basic_ostream_formatter |
Make types that support ostream operators available for std::format . More... | |
struct | Driver |
Use/derive from this class for "global" variables that you need all over the place. More... | |
struct | is_bit_enum |
class | Lexer |
The blueprint for a lexer with a buffer of K tokens to peek into the future (Lexer::ahead). More... | |
struct | Loc |
Location in a File. More... | |
class | Parser |
The blueprint for a recursive descent/ ascent parser using a K lookahead of Tok ens. More... | |
struct | Pos |
Position in a source file; pass around as value. More... | |
class | Ring |
A ring buffer with N elements. More... | |
class | Ring< T, 1 > |
Specialization if N == 1 - doesn't need a ring. More... | |
class | Ring< T, 2 > |
Specialization if N == 2 ; doesn't need a ring, we just copy. More... | |
class | RuntimeCast |
Inherit from this class using CRTP, for some nice dynamic_cast -style wrappers. More... | |
class | Sym |
A Symbol just wraps a pointer to Sym::String, so pass Sym itself around as value. More... | |
class | SymPool |
Hash set where all strings - wrapped in Symbol - live in. More... | |
class | Tab |
Keeps track of indentation level during output. More... | |
Concepts | |
concept | Nodeable |
concept | BitEnum |
Typedefs | |
using | ostream_formatter = basic_ostream_formatter<char> |
Sym | |
Set/Map is keyed by pointer - which is hashed in SymPool. | |
template<class V > | |
using | SymMap = std::unordered_map<Sym, V> |
using | SymSet = std::unordered_set<Sym> |
Functions | |
void | unreachable () |
void | breakpoint () |
Raise breaokpoint in debugger. | |
std::ostream & | operator<< (std::ostream &os, Pos pos) |
std::ostream & | operator<< (std::ostream &os, Loc loc) |
Bit operations for enum classs | |
Provides all kind of bit and comparison operators for an Note that the bit operators return using fe::operator&;
using fe::operator|;
using fe::operator^;
using fe::operator<=>;
using fe::operator==;
using fe::operator!=;
enum class MyEnum : unsigned {
A = 1 << 0,
B = 1 << 1,
C = 1 << 2,
};
Definition enum.h:11 | |
template<BitEnum E> | |
constexpr auto | operator& (E x, E y) |
template<BitEnum E> | |
constexpr auto | operator& (std::underlying_type_t< E > x, E y) |
template<BitEnum E> | |
constexpr auto | operator& (E x, std::underlying_type_t< E > y) |
template<BitEnum E> | |
constexpr auto | operator| (E x, E y) |
template<BitEnum E> | |
constexpr auto | operator| (std::underlying_type_t< E > x, E y) |
template<BitEnum E> | |
constexpr auto | operator| (E x, std::underlying_type_t< E > y) |
template<BitEnum E> | |
constexpr auto | operator^ (E x, E y) |
template<BitEnum E> | |
constexpr auto | operator^ (std::underlying_type_t< E > x, E y) |
template<BitEnum E> | |
constexpr auto | operator^ (E x, std::underlying_type_t< E > y) |
template<BitEnum E> | |
constexpr std::strong_ordering | operator<=> (std::underlying_type_t< E > x, E y) |
template<BitEnum E> | |
constexpr std::strong_ordering | operator<=> (E x, std::underlying_type_t< E > y) |
template<BitEnum E> | |
constexpr bool | operator== (std::underlying_type_t< E > x, E y) |
template<BitEnum E> | |
constexpr bool | operator!= (std::underlying_type_t< E > x, E y) |
template<BitEnum E> | |
constexpr bool | operator== (E x, std::underlying_type_t< E > y) |
template<BitEnum E> | |
constexpr bool | operator!= (E x, std::underlying_type_t< E > y) |
out/outln/err/errln | |
Print to | |
template<class... Args> | |
void | err (format::format_string< Args... > fmt, Args &&... args) |
template<class... Args> | |
void | out (format::format_string< Args... > fmt, Args &&... args) |
template<class... Args> | |
void | errln (format::format_string< Args... > fmt, Args &&... args) |
template<class... Args> | |
void | outln (format::format_string< Args... > fmt, Args &&... args) |
Variables | |
is_enum | |
template<class T > | |
constexpr bool | is_bit_enum_v = is_bit_enum<T>::value |
using fe::ostream_formatter = basic_ostream_formatter<char> |
using fe::SymMap = std::unordered_map<Sym, V> |
using fe::SymSet = std::unordered_set<Sym> |
|
inline |
void fe::err | ( | format::format_string< Args... > | fmt, |
Args &&... | args ) |
void fe::errln | ( | format::format_string< Args... > | fmt, |
Args &&... | args ) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
std::ostream & fe::operator<< | ( | std::ostream & | os, |
Loc | loc ) |
std::ostream & fe::operator<< | ( | std::ostream & | os, |
Pos | pos ) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
void fe::out | ( | format::format_string< Args... > | fmt, |
Args &&... | args ) |
void fe::outln | ( | format::format_string< Args... > | fmt, |
Args &&... | args ) |
|
inline |
|
inlineconstexpr |