lalrpop VS PEGTL

Compare lalrpop vs PEGTL and see what are their differences.

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
lalrpop PEGTL
25 12
2,873 1,867
1.7% 1.5%
8.0 7.2
6 days ago 2 days ago
Rust C++
Apache-2.0 or MIT Boost Software License 1.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

lalrpop

Posts with mentions or reviews of lalrpop. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-06.
  • nom > regex
    10 projects | /r/rust | 6 Dec 2023
    And some related parser tools: - https://github.com/kevinmehall/rust-peg - https://github.com/pest-parser/pest - https://github.com/lalrpop/lalrpop
  • What is the state of the art for creating domain-specific languages (DSLs) with Rust?
    7 projects | /r/rust | 21 Jun 2023
    lalrpop
  • Letlang — Roadblocks and how to overcome them - My programming language targeting Rust
    6 projects | /r/rust | 7 Jun 2023
    Rust is a very nice langage for implementing compilers, and has a nice ecosystem for it (logos, rust-peg, lalrpop, astmaker -- this one is mine --, etc...).
  • loxcraft: a compiler, language server, and online playground for the Lox programming language
    14 projects | /r/ProgrammingLanguages | 29 Apr 2023
    rust-langdev has a lot of libraries for building compilers in Rust. Perhaps you could use these to make your implementation easier, and revisit it later if you want to build things from scratch. I'd suggest logos for lexing, LALRPOP / chumsky for parsing, and rust-gc for garbage collection.
  • Question about lexer and parser generators in Rust
    8 projects | /r/rust | 11 Feb 2023
    Hi! For one of my projects I am currently using lalrpop (https://github.com/lalrpop/lalrpop/tree/master/doc/calculator/src), which is far from complete, but has the basic syntax I was looking for. I took some examples and worked around some lexer stuff but I’m currently happy with it. If you use it and have Intellij stuff installed, you can also use a plug-in for highlighting and SOMETIMES error checking. Otherwise, even VSCode had a great plug-in for highlighting!
  • Contrext-free language parsing with procedural macros
    2 projects | /r/rust | 25 Jan 2023
    How would you compare and contrast this with, say, lalrpop?
  • Tools for creating a programming language in rust
    8 projects | /r/rust | 15 Nov 2022
    lalrpop is great. It's a completely different approach from nom, but for parsing a programming language, I would at least consider it. RustPython uses it.
  • Best languages to design a new language in?
    4 projects | /r/ProgrammingLanguages | 19 Sep 2022
    I presume LALRPOP handles left recursion just fine.
  • Show HN: IQ” – jq for images (using rust, LALRPOP)
    2 projects | news.ycombinator.com | 18 Sep 2022
    I wanted to share an experimental side project I have been working on for some time. I constantly use commands like `jq` and `yq` for processing structured data in my day job and I was curious if a similar idea could be applied to images.

    Another goal of mine was to get some exposure to with rust. I discovered the LALRPOP parser generator which really helped moved the project along (https://github.com/lalrpop/lalrpop)

  • Writing a new programming language. Part II: Variables and expressions
    3 projects | dev.to | 10 Aug 2022
    The key point here is that we are going to depend on the lalrpop library to generate the parser based on the formal grammar we define. Note that we have it as part of the [build-dependencies] section and we only depend on a tiny utility crate called lalrpop-util at runtime. The reason for that is the main lalrpop "magic" would happen during the crate compilation (in the build.rs file) when lalrpop would generate the deterministic pushdown automaton based on our grammar. The code generation logic is not required to be part of our interpreter, we only need a few utility methods from the lalrpop-util for the automaton to operate. You might have noticed that we also enable the lexer feature of lalrpop, because we are going to use lexer provided by lalrpop as well (please refer to the Part I if you do not know what the lexer is).

PEGTL

Posts with mentions or reviews of PEGTL. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-06.
  • Show HN: Matcheroni, a tiny C++20 header library for building lexers/parsers
    4 projects | news.ycombinator.com | 6 Jul 2023
    Very cool, and I like the name!

    I'd be interested in reading about how Matcheroni compares with PEGTL and Lexy.

    https://github.com/taocpp/PEGTL

  • Use PEGTL to remove my clunky homemade parser
    2 projects | dev.to | 30 Jan 2023
    I found a library I wanted to test: Pegtl
  • What are some cool modern libraries you enjoy using?
    32 projects | /r/cpp | 18 Sep 2022
    I like PEGTL
  • Are C/C++ developers allowed to import libraries to make coding easier or are they expected to build every functions and methods from scratch (without importing anything like String.h)?
    1 project | /r/learnprogramming | 17 Jun 2022
    Sure - libraries that are expected to be entirely self-contained. The one that comes to mind is PEGTL, a parser combinator library that is intended to be embedded inside a larger program. Making it import more dependencies would break this philosophy. Similarly, in the Rust world, there are a variety of "no-std" crates that should be able to be imported even if the standard library is not available on the target platform.
  • TIL: Visual Studio has quantum state values 🤨
    1 project | /r/cpp | 17 Mar 2022
    The program in the post was just an example meant to illustrate the problem. Originally, this (new) behavior of MSVC broke my code in the PEGTL, see [this commit](https://github.com/taocpp/PEGTL/commit/e3c8cb499dc3d1d76d23f2d5d79469dcb15550c5) that I needed to apply to fix it.
  • We Built a C++ Rendering Engine for the Web
    2 projects | news.ycombinator.com | 10 Jul 2021
    As a professional C++ programmer I feel a lot of the reasons C++ gets this response is because it's simply not "batteries included" like Go or Rust.

    C++ is a very powerful, unopinionated language, that gives you a lot of freedom to attack your problem domain the way you best see fit.

    If you're writing a networked application, don't use POSIX sockets, go and find a higher level library. If you're parsing complex text formats, don't iterate over buffers with char*'s, go pick up PEGTL[0]. If you're working on graphs, or need to properly index in-memory data, go pick up Boost[1][2]. If you need a GUI, go pick up Qt.

    It's extremely common in C++, due to the lack of a universal package management solution, for people to try and "muddle through" and do shit themselves when it's far outside their core competency.

    At one of my last employers, the core product was parsing JSON with std::regex, simply because they couldn't be bothered to integrate a JSON library.

    [0] https://github.com/taocpp/PEGTL

    [1] https://www.boost.org/doc/libs/1_76_0/libs/graph/

    [2] https://www.boost.org/doc/libs/1_76_0/libs/multi_index/doc/i...

  • Is there anything like sly for C++?
    3 projects | /r/cpp | 1 Jul 2021
    You are looking for Boost.Spirit (https://www.boost.org/doc/libs/1_76_0/libs/spirit/doc/x3/html/index.html) or PEGTL (https://github.com/taocpp/PEGTL)
  • Why no more Lex/Yakk/ANTLR/whatever?
    5 projects | /r/cpp | 20 Jun 2021
    I personally prefer to use parsing combinator libraries in C++, where the "grammar" is just part of normal C++ and directly integrate. Examples are Boost.Spirit, pegtl, or (my own) lexy.
  • Rust's Most Unrecognized Contributor
    1 project | /r/rust | 2 May 2021
  • Wondered if anyone is interested in a c++ parser combinators library?
    1 project | /r/cpp | 13 Apr 2021
    While I'm not quite sure how this might transfer to your approach, with your Haskell-inspired style being quite different from our C++ templates, in the PEGTL our equivalent to your Char, which is called one, is variadic (true to the T in PEGTL a variadic template) and takes a list of possible matches.

What are some alternatives?

When comparing lalrpop and PEGTL you can also consider the following projects:

pest - The Elegant Parser

lexy - C++ parsing DSL

nom - Rust parser combinator framework

cpp-peglib - A single file C++ header-only PEG (Parsing Expression Grammars) library

rust-peg - Parsing Expression Grammar (PEG) parser generator for Rust

spirit - Boost.org spirit module

combine - A parser combinator library for Rust

C++ B-tree - Git mirror of the official (mercurial) repository of cpp-btree

chomp - A fast monadic-style parser combinator designed to work on stable Rust.

pybind11 - Seamless operability between C++11 and Python

pom - PEG parser combinators using operator overloading without macros.

sparsepp - A fast, memory efficient hash map for C++