Skip to content

Releases: leissa/fe

FE 0.5.0

21 Mar 00:19
Compare
Choose a tag to compare
  • Arena improvements
  • bug fix in location tracking if Lexer lookahead was > 1

FE 0.4.1

15 Jan 12:12
Compare
Choose a tag to compare
  • typo
  • removed FE_INSTALL_DEPENDENCIES

FE 0.4.0

30 Nov 13:10
Compare
Choose a tag to compare
  • std::format can now be substituted with fmtlib.
    This is useful if your C++ compiler does not yet have support for std::format. See #2.
  • Parser::accept does now just return a Tok instead of a std::optional<Tok>.
    Parser::accept and Parser::expect indicate failure by constructing a Token with its default constructor. Provide a conversion operator to bool to check for an error:
    class Tok {
    public:
        enum class Tag {
            Nil,
            // ...
        };
        // ...
        explicit bool operator() const { return tag_ != Tag::Nil; }
        // ...
    };
     
    // Your Parser:
    if (auto tok = accept(Tok::Tag:My_Tag)) {
        do_sth(tok);
    }
    This is slightly more verbose as you have to add sth like a Nil tag, add a default constructor that initializes the tag with Nil (what you probably need anyway), and add the the one-liner for the conversion to bool but is also more lightweight and slightly easier to use.

FE 0.3.0

03 Nov 23:10
Compare
Choose a tag to compare
  • UTF-8/char32_t-safe wrappers for <ctype> functions
  • more convenience functions in the style of <ctype>-functions
  • minor bug fixes and refactoring

FE 0.2.1

02 Nov 17:59
Compare
Choose a tag to compare

Just some minor updates

FE 0.2.0

18 Oct 20:53
Compare
Choose a tag to compare

This includes a short string optimization: A string will not be hashed into the SymPool if it it completely fits inside of a Sym. On your typical 64 bit machine that means that strings <= 6 characters + \0 will be kept "inline".

FE 0.1.1

10 Oct 22:57
Compare
Choose a tag to compare

Just a few bug fixes over 0.1.

FE 0.1

10 Oct 12:07
Compare
Choose a tag to compare

Initial Release.

Features

  • Arena allocator for efficient memory management.
  • Efficient symbol pool with optional Abseil support.
    String comparisons are now only pointer comparisons!
  • Keep track of source code locations.
  • Blueprint for a lexer with UTF-8.
  • Blueprint for a parser.
  • You need at least C++-20.