awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
ohmjs avatar

ohmjs/ohm

0
View on GitHub↗
5,471 stars·225 forks·JavaScript·mit·17 views

Ohm

Ohm is a formal grammar parser generator and domain-specific language framework. It provides a system for defining custom languages to parse, validate, and extract data from input text, transforming raw strings into hierarchical abstract syntax trees based on specified formal rules.

The project utilizes an Earley parsing algorithm, which allows it to support all context-free grammars, including those with left recursion and ambiguity, without requiring predefined operator precedence. It also includes a dedicated debugging toolkit for tracing and visualizing the step-by-step state transitions and rule applications the parser makes when processing input.

The framework covers language definition, input string validation, and semantic value extraction from parsed structures.

Features

  • Grammar Rule Specification - Provides a high-level syntax for specifying the rules and structure of custom formal grammars.
  • Domain Specific Languages - Acts as a comprehensive framework for creating custom domain-specific languages through syntactic rules and semantic value extraction.
  • Rule-Based Text Parsers - Uses predefined linguistic grammars to tokenize, tag, and map text into structured data.
  • Language Development - Provides utilities for building new programming or configuration languages using formal grammar rules.
  • Earley - Uses the Earley parsing algorithm to support all context-free grammars, including those with left recursion.
  • Parsing and Grammars - Implements libraries for lexical analysis, parsing, and formal grammar definition to convert raw text into structured data.
  • Text Processing and Parsing - Provides libraries for matching input text against a grammar to produce a data structure.
  • Data Parsing and Extraction - Identifies, isolates, and converts raw input into structured, schema-validated formats.
  • Abstract Syntax Tree Generators - Transforms raw input strings into hierarchical abstract syntax trees based on a defined formal grammar.
  • Context-Free Grammar Frameworks - Provides a framework for specifying language rules that support left recursion and ambiguous grammars.
  • Domain Specific Languages - Implements specialized parsing for languages designed for particular application domains.
  • String Parsing - Converts textual representations into structured data types and validates they match defined rules.
  • Abstract Syntax Tree Parsing - Converts source code or template strings into a structured tree representation for analysis.
  • String Format Specification - Validates that string content conforms to specific formal grammar patterns.
  • Formal Grammar Parser Generators - Provides a tool for defining custom languages using formal grammars to parse, validate, and extract data.
  • Grammar-Based Parsers - Creates hierarchical syntax trees based on specialized formal grammar rules.
  • Earley Parser Implementations - Uses a non-deterministic Earley parsing engine to handle complex context-free grammars including left recursion.
  • Earley Parsers - Implements an Earley parser to support all context-free grammars including those with left recursion and ambiguity.
  • Grammar Validation Tools - Provides tools for validating that input strings conform to specific formal grammar definitions.
  • Parser Execution Tracing - Records state transitions and rule applications to visualize the decision process of the parsing engine.
  • Grammar Debugging Tools - Traces the decision process of a parser to identify and fix errors in a formal language definition.
  • Parser Decision Visualizations - Generates text traces or graphical visualizations of the steps and decisions a parser takes.
  • Semantic Value Extraction - Walks the generated parse tree using semantic operations to retrieve specific data from matched nodes.
  • Text Extraction - Isolates and retrieves specific meaningful segments of data from larger raw text inputs.
  • Parser Debugging Tools - Provides a dedicated toolkit for tracing and visualizing the step-by-step decisions the parser makes when processing input.
  • Parsing Debugging Toolkits - Includes a dedicated toolkit for tracing and visualizing the step-by-step state transitions of the parsing engine.
  • Language Definition Frameworks - Provides a framework for specifying the rules and structure of custom domain-specific languages.
  • Non-Deterministic Parsing State Tracking - Tracks multiple parallel parsing hypotheses to handle ambiguous grammar rules without predefined operator precedence.
  • Parser State Recording - Logs every rule application and state transition to visualize the internal decision process during parsing.

Star history

Star history chart for ohmjs/ohmStar history chart for ohmjs/ohm

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Ohm

Similar open-source projects, ranked by how many features they share with Ohm.
  • lark-parser/larklark-parser avatar

    lark-parser/lark

    5,914View on GitHub↗

    Lark is a Python parsing toolkit used to define grammars and convert raw text into annotated parse trees. It serves as an abstract syntax tree generator and a grammar definition language for specifying language rules through terminals and regular expressions. The library provides two primary parsing implementations: an Earley parsing library capable of handling all context-free languages, including those with ambiguity and left-recursion, and a high-performance LALR parsing library designed for deterministic languages with low memory overhead. Beyond core parsing, the toolkit includes capabi

    Pythoncykearleygrammar
    View on GitHub↗5,914
  • hardmath123/nearleyHardmath123 avatar

    Hardmath123/nearley

    3,740View on GitHub↗

    Nearley is a JavaScript parser toolkit used to define context-free grammars and generate corresponding parsers. It features an EBNF grammar compiler that transforms language definitions written in extended Backus-Naur Form into executable JavaScript code, utilizing an Earley parser implementation to process any context-free grammar. The toolkit distinguishes itself by its ability to handle left-recursion and ambiguity without failing, allowing it to identify and return multiple valid derivations for a single input string. It also includes a grammar fuzzing generator to produce random strings

    JavaScript
    View on GitHub↗3,740
  • kach/nearleykach avatar

    kach/nearley

    3,740View on GitHub↗

    Nearley is a JavaScript parser toolkit and context-free grammar compiler. It functions as an Earley parser generator that transforms BNF-like grammar definitions into executable code capable of analyzing text and generating abstract syntax trees. The project is distinguished by its ability to handle any context-free grammar, including those with left recursion and ambiguity, by maintaining multiple valid derivations for a single input. It further supports incremental parsing, allowing input strings to be processed in chunks to provide partial results and real-time feedback. Beyond core parsi

    JavaScript
    View on GitHub↗3,740
  • antlr/antlr4antlr avatar

    antlr/antlr4

    18,928View on GitHub↗

    ANTLR is a grammar-based code generator and multi-language parser generator used to design and implement custom languages. It functions as a toolkit for transforming formal language definitions into executable source code for processing structured text or binary files, while providing a framework for automatically constructing and traversing hierarchical parse trees. The project is distinguished by its ability to generate lexers and parsers in various target programming languages from a single shared grammar definition. It supports grammars containing direct left recursion and utilizes adapti

    Java
    View on GitHub↗18,928
See all 30 alternatives to Ohm→

Frequently asked questions

What does ohmjs/ohm do?

Ohm is a formal grammar parser generator and domain-specific language framework. It provides a system for defining custom languages to parse, validate, and extract data from input text, transforming raw strings into hierarchical abstract syntax trees based on specified formal rules.

What are the main features of ohmjs/ohm?

The main features of ohmjs/ohm are: Grammar Rule Specification, Domain Specific Languages, Rule-Based Text Parsers, Language Development, Earley, Parsing and Grammars, Text Processing and Parsing, Data Parsing and Extraction.

What are some open-source alternatives to ohmjs/ohm?

Open-source alternatives to ohmjs/ohm include: lark-parser/lark — Lark is a Python parsing toolkit used to define grammars and convert raw text into annotated parse trees. It serves as… hardmath123/nearley — Nearley is a JavaScript parser toolkit used to define context-free grammars and generate corresponding parsers. It… kach/nearley — Nearley is a JavaScript parser toolkit and context-free grammar compiler. It functions as an Earley parser generator… antlr/antlr4 — ANTLR is a grammar-based code generator and multi-language parser generator used to design and implement custom… pest-parser/pest — Pest is a Rust parsing library and automatic parser generator that transforms formal grammar definitions into… harc/ohm — Ohm is a compiler construction toolkit and parser combinator library used to build parsers, interpreters, and…