CommunityNews

CommunityNews

Ohm – A library and language for building parsers, interpreters, compilers, etc

Ohm is a parsing toolkit consisting of a library and a domain-specific language. You can use it to parse custom file formats or quickly build parsers, interpreters, and compilers for programming languages.

The Ohm language is based on parsing expression grammars (PEGs), which are a formal way of describing syntax, similar to regular expressions and context-free grammars. The Ohm library provides a JavaScript interface for creating parsers, interpreters, and more from the grammars you write.

  • Full support for left-recursive rules means that you can define left-associative operators in a natural way.
  • Object-oriented grammar extension makes it easy to extend an existing language with new syntax.
  • Modular semantic actions. Unlike many similar tools, Ohm completely separates grammars from semantic actions. This separation improves modularity and extensibility, and makes both grammars and semantic actions easier to read and understand.
  • Online editor and visualizer. The Ohm Editor provides instant feedback and an interactive visualization that makes the entire execution of the parser visible and tangible. It’ll make you feel like you have superpowers. :muscle:

Some awesome things people have built using Ohm:

  • Seymour, a live programming environment for the classroom.
  • Chorus, a project exploring the middle ground between spreadsheets and programming.
  • Shadama, a particle simulation language designed for high-school science.
  • turtle.audio, an audio environment where simple text commands generate lines that can play music.
  • A browser-based tool that turns written Konnakkol (a South Indian vocal percussion art) into audio.
  • Wildcard, a browser extension that empowers anyone to modify websites to meet their own specific needs, uses Ohm for its spreadsheet formulas…

This thread was posted by one of our members via one of our news source trackers.

Most Liked

AstonJ

AstonJ

@ohm - saw this and wondered whether it was you behind it :laughing:

ohm

ohm

Ha! Unfortunately, no. I think it would have been a bit vain as well :rofl:

AstonJ

AstonJ

It’s a cool name tho Ohm! :sunglasses:

I remember that when I first came across your username I immediately thought of electricity :electric_plug: :robot:

Where Next?

Popular Backend topics Top

Eiji
Elixir version 1.10.3 has been released on Apr 25, 2020. See the release announcement. This release officially supports Erlang/OTP versi...
New
First poster: bot
Symfony v5.2.0-BETA1 has been released. Link: Release v5.2.0-BETA1 · symfony/symfony · GitHub
New
First poster: bot
Kotlin v1.4.20 has been released. Link: Release Kotlin 1.4.20 · JetBrains/kotlin · GitHub
New
First poster: bot
Integrated Haskell Platform v20201113 has been released. Link: Release Beta 13.11.2020 · digitallyinduced/ihp · GitHub
New
First poster: bot
Integrated Haskell Platform v20201127 has been released. Link: Release Beta 27.11.2020 · digitallyinduced/ihp · GitHub
New
First poster: bot
Kotlin v1.4.21 has been released. Link: Release Kotlin 1.4.21 · JetBrains/kotlin · GitHub
New
First poster: NewsBot
Actix web-v4.0.0-beta.1, awc-v3.0.0-beta.1 and http-v3.0.0-beta.1 has been released. Link: https://github.com/actix/actix-web/releases/...
New
First poster: bot
Node.js v15.10.0, v14.16.0 and v12.21.0 has been released. Link: https://github.com/nodejs/node/releases/tag/v15.10.0 Link: Release 2...
New
First poster: bot
Node.js v16.17.0 has been released. Link: https://github.com/nodejs/node/releases/tag/v16.17.0
New
NewsBot
A new Go blog post/announcement has been posted! Get the full details here: Traversal-resistant file APIs - The Go Programming Language
New

Other popular topics Top

AstonJ
A thread that every forum needs! Simply post a link to a track on YouTube (or SoundCloud or Vimeo amongst others!) on a separate line an...
New
AstonJ
What chair do you have while working… and why? Is there a ‘best’ type of chair or working position for developers?
New
brentjanderson
Bought the Moonlander mechanical keyboard. Cherry Brown MX switches. Arms and wrists have been hurting enough that it’s time I did someth...
New
AstonJ
poll poll Be sure to check out @Dusty’s article posted here: An Introduction to Alternative Keyboard Layouts It’s one of the best write-...
New
PragmaticBookshelf
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
New
Margaret
Hello content creators! Happy new year. What tech topics do you think will be the focus of 2021? My vote for one topic is ethics in tech...
New
PragmaticBookshelf
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or...
New
AstonJ
Continuing the discussion from Thinking about learning Crystal, let’s discuss - I was wondering which languages don’t GC - maybe we can c...
New
foxtrottwist
A few weeks ago I started using Warp a terminal written in rust. Though in it’s current state of development there are a few caveats (tab...
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New