Nicheloom

Market intelligence for builders — see what's gaining traction before it's crowded.

Yantra

an LALR(1) parser generator for C++

This is 1 of 120 launches in QR code generators and utilities — see how it stacks up on momentum and crowding →

32 other launches read as similar to this one →

Details

External ID
49916997
Source
HN
Company
—
Product
Yantra
Website domain
github.com
Launched
Oct. 1, 2026
Cohort
—
Upvotes
30
Upvotes percentile
1.0
Tags
—
Fetched at
Oct. 1, 2026, 5:01 p.m.
Updated at
Oct. 1, 2026, 5:01 p.m.

Description

Yantra is a C++ parser generator: lexer, parser, and AST walker all generated from one tool. It builds the whole AST first, then walks it.Most LALR parser generators (Yacc, Bison, Lemon) run your semantic actions during parsing, as each rule reduces, bottom-up.That means at the time a rule's action runs, you don't yet know what its parent looks like. This pushes a lot of grammars toward hand-built AST classes and a separate walking pass whenever you need to look ahead into siblings or defer a decision until more context is available.On the other hand, Yantra always builds the whole AST first, then walks it top-down in a separate pass, calling your semantic actions as it goes. A parent rule's action can run before its children are visited.A single grammar can define more than one walker. For example, one that emits C++, another that emits Java, from the same parse. The AST and the walker classes are both generated for you.A small example (full version, with compile commands, in the README): start := expr; expr := expr(a) PLUS expr(b) %{ std::cout << "Adding" << std::endl; %} expr := NUMBER(N) %{ std::cout << "Number: " << N.text << std::endl; %} NUMBER := "\d+"; PLUS := "\+"; WS := "\s+"!; Running this on "1 + 2 + 3" prints: Adding Number: 1 Adding Number: 2 Number: 3 The outer "Adding", the root of the tree, prints first, before either of its children. That's only possible because the whole tree exists before any action runs.Some other things about it: integrated lexer with mode support (for things like nested comments), an optional amalgamated single-file output mode with a generated main(), C++23, MIT licensed.It's young (0.5.1, pre-1.0) and single-maintainer, so treat it as early. I'd rather know what breaks than have it look more finished than it is.Known gaps are listed at https://github.com/TantrixAuto/yantra/blob/main/docs/known_l...Repo: https://github.com/TantrixAuto/yantraFeedback and questions are all welcome. I'll be around.

Enrichment

Theme
QR code generators and utilities
Vertical
Horizontal
Function
Dev tools
Audience
Developer
AI stance
Not AI
Project type
Hobby / open-source project
Normalized one-liner
lalr parser generator for c++ developers
Manually corrected
False

Discussion

15 comments analyzed.

Competitors mentioned: Ragel, ANTLR, Tree-sitter, Chumsky, parsertl17

Concerns raised: Lack of error recovery causing parsing to stop on first error, Generic error messages compared to hand-written parsers, Production compilers generally favor hand-written recursive descent

Feature requests: Python bindings for AST and walker classes, TypeScript language bindings

Competitors

Other products that read as similar to this one — 32 launches clear the similarity bar, closest 8 shown.

Attention rank: #1 of 33 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).

Launched 330 days after the earliest competitor.

Other launches for this product

Same idea, different domain

Nobody's really built a dev tools tool for Sales yet.