ohmjs/ohm

A library and language for building parsers, interpreters, compilers, etc.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 42 minutes ago
Added to GitGenius on September 12th, 2026
Created on May 21st, 2015
Open Issues & Pull Requests: 48 (+0)
GitHub issues: Enabled
Number of forks: 226
Total Stargazers: 5,548 (+0)
Total Subscribers: 80 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 10.4 hours
Mean response time: 87.1 days
90th percentile: 274.8 days
Tracked items: 42

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 11% of issues opened in the past year have been closed. Three people close 94% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 19
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 722 days
Stale 30+ days: 19
Stale 90+ days: 18

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • enhancement (7)
  • v18 (2)
  • chore (1)
  • ecmascript (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Ohm is a parsing toolkit consisting of a library and domain-specific language for building parsers, interpreters, and compilers.

Ohm addresses the problem of creating parsers for custom syntaxes and programming languages by combining a grammar language based on parsing expression grammars with a JavaScript library that executes those grammars. The grammar language supports left-recursive rules, allowing natural definition of left-associative operators, and can be extended through object-oriented grammar inheritance. The toolkit's distinctive architectural choice is complete separation of grammars from semantic actions, which are defined as modular JavaScript functions rather than embedded in the grammar itself. This separation improves readability and makes both grammars and semantic actions easier to maintain and reuse across different contexts.

Ohm suits developers building domain-specific languages, custom file format parsers, or language implementations who want a clear separation between syntax definition and interpretation logic. The project provides an interactive online editor with real-time visualization of parser execution, which helps developers understand and debug their grammars. This tool works well for educational contexts and rapid prototyping where visibility into parsing behavior is valuable. The toolkit has been used to build live programming environments, particle simulation languages, audio synthesis tools, and browser extensions that parse user-defined formulas.

The project maintains active development with regular updates to its codebase and documentation. The maintainers engage with the community through a dedicated Discord channel for discussion and support. The toolkit includes comprehensive examples and interactive learning resources, including JSFiddle demonstrations and an online editor that serves as both a development environment and educational tool.