Skip to content

Formal Language

January 9, 2025
June 18, 2019

bnf
regex

Compiler-compiler - Wikiwand
A Guide To Parsing: Algorithms And Terminology

Parsing expression grammar - Wikiwand PEG

Earley parser - Wikiwand
LR parser - Wikiwand
Simple LR parser - Wikiwand
LALR parser - Wikiwand

LALR parser generator - Wikiwand
Comparison of parser generators - Wikiwand

Parser Combinators are Easy - DEV Community 👩‍💻👨‍💻

Create Your Own Expression Parser - Level Up Coding
cosinekitty/parser: Parse math expressions and render them using MathJax.
Expression Parser Demo

PEG Parsing Series Overview. My series of blog posts about PEG… | by Guido van Rossum | Medium

Tree-sitter

Tree-sitter | Introduction able to parse invalid input, various language bindings

smacker/go-tree-sitter: Golang bindings for tree-sitter https://github.com/tree-sitter/tree-sitter
tree-sitter/py-tree-sitter: Python bindings to the Tree-sitter parsing library

ANTLR

ANTLR
antlr/antlr4-tools: Tools to run antlr4 w/o needing to install java or antlr4! Python implementation
antlr4/doc/getting-started.md at master · antlr/antlr4
The ANTLR Mega Tutorial

antlr/grammars-v4: Grammars written for ANTLR v4; expectation that the grammars are free of actions.

Antlr grammars in Rust : rust

yaklang/common/suricata at main · yaklang/yaklang

antlr -Dlanguage=Go ./SuricataRuleLexer.g4 ./SuricataRuleParser.g4 -o parser -no-listener -visitor

Lark

Python

lark-parser/lark: Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.
Welcome to Lark’s documentation! — Lark documentation

lark-parser/lark_cython: Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance

Python Lark Parser introduction - DEV Community
How to write a DSL (in Python with Lark) • Infinitely Abstract
Writing a parser for CS:GO files - Rico’s blog

parsuricata/parsuricata/_parser.py at master · theY4Kman/parsuricata

TatSu

Python

竜 TatSu — 竜 TatSu documentation

Boost Spirit

Boost Spirit

GNU Bison

GNU Bison - Wikiwand
Bison - GNU Project - Free Software Foundation

Go

ebnf package - golang.org/x/exp/ebnf - Go Packages
ebnf package - github.com/PuerkitoBio/ebnf - Go Packages

nearley

Home - nearley.js - JS Parsing Toolkit
kach/nearley: 📜🔜🌲 Simple, fast, powerful parser toolkit for JavaScript.

Writing a parser - nearley.js - JS Parsing Toolkit


Log Parsing

Rust

Parsing logs 230x faster with Rust
Geal/nom: Rust parser combinator framework

Python

Logparser’s Documentation — logparser 0.1 documentation
logpai/logparser: A toolkit for automated log parsing [ICSE'19, TDSC'18, DSN'16]

logparser/demo at master · logpai/logparser usage

BlueLionLogram/Logram: Efficient Log Parsing Using n-Gram Dictionaries
[2001.03038] Logram: Efficient Log Parsing Using n-Gram Dictionaries

pylogsparser · PyPI