ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.
-
Updated
Apr 10, 2022 - Java
{{ message }}
A grammar describes the syntax of a programming language, and might be defined in Backus-Naur form (BNF). A lexer performs lexical analysis, turning text into tokens. A parser takes tokens and builds a data structure like an abstract syntax tree (AST). The parser is concerned with context: does the sequence of tokens fit the grammar? A compiler is a combined lexer and parser, built for a specific grammar.
ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.
PEG.js: Parser generator for JavaScript
Parsing Expression Grammar (PEG) parser generator for Rust
Command pigeon generates parsers in Go from a PEG grammar.
A single file C++ header-only PEG (Parsing Expression Grammars) library
BNF Converter
An IntelliJ plugin for ANTLR v4
a parser and lexer generator as a Rust procedural macro
Compile Time Parser Generator is a C++ single header library which takes a language description as a C++ code and turns it into a LR1 table parser with a deterministic finite automaton lexical analyzer, all in compile time.
The implementation of the Rascal meta-programming language (including interpreter, type checker, parser generator, compiler and JVM based run-time system)
竜 TatSu generates Python parsers from grammars in a variation of EBNF
PEGs for Nim, another take
Symbolic parser generator for Julia language expressions using REDUCE algebra term rewriter
a C# embeddable lexer and parser generator (.Net core)
A parser generator for C
The Zephir Parser delivered as a C extension for the PHP language.
Home of LoycCore, the LES language of Loyc trees, the Enhanced C# parser, the LeMP macro preprocessor, and the LLLPG parser generator.
Generates generalised LL (GLL) and reduced size LR(1) parsers with matching lexers
A modified version of the Irony project (https://irony.codeplex.com) with .NET Core support
Add an option to NimlLexer to lexNext / lexIter provide a specified token when the lexer reaches EOF only once.
Example:
# lexer setup
lexer.ignoreIf = someProc
lexer.produceEOFToken(tokenForEOF) # if it is not given, reaching EOF produces no token.
# use lexer
...related: #70
JavaScript practical parser generator library using combinators
Nice parsers in OCaml without the boilerplate
Plugin for pegjs to generate TypeScript parsers.
EBNF parser and generic parser generator for Ruby.
ANTLR as a libray for JVM based languages
The rust code in the
.lalrpopfiles are still on rust 2015 and need to be manually updated sincecargo fixwon't work on those files.We should also update the generated code to emit 2018 idiomatic code (see #2018 )