ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.
-
Updated
Oct 10, 2021 - 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
a parser and lexer generator as a Rust procedural macro
An IntelliJ plugin for ANTLR v4
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
Symbolic parser generator for Julia language expressions using REDUCE algebra term rewriter
PEGs for Nim, another take
a C# embeddable lexer and parser generator (.Net core)
Home of LoycCore, the LES language of Loyc trees, the Enhanced C# parser, the LeMP macro preprocessor, and the LLLPG parser generator.
The Zephir Parser delivered as a C extension for the PHP language.
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
JavaScript practical parser generator library using combinators
A parser generator for C
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
Nice parsers in OCaml without the boilerplate
Plugin for pegjs to generate TypeScript parsers.
ANTLR as a libray for JVM based languages
EBNF parser and generic parser generator for Ruby.
A small and easy to use parser generator. Specify your grammar in pure java and compile dynamically. Especially suitable for DSL creation in java.
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 )