New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

jspeg

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jspeg

Parsing Expression Grammar engine for Javascript, written in Typescript, descending from peg.js

latest
Source
npmnpm
Version
0.2.1
Version published
Maintainers
1
Created
Source

jspeg

jspeg is a Parsing Expression Grammar parser for Javascript, written in Typescript, descending from peg.js by David Majda.

The goal of jspeg is to provide a modern PEG environment for contemporary Javascript.

What is a Parsing Expression Grammar?

Parsers Are Hard ™.

There are lots of ways to go about writing parsers:

  • LL, LR, LALR
  • Recursive descent, Pratt
  • Earley, Combinator
  • Lenses
  • Et cetera

Lots of these have advantages and disadvantages. Some are faster; some can't express certain languages; some need more computer resources; some are easier; and so on. Mostly these are trade-offs; the fast one is the difficult one, et cetera. (Of course they are; if one parser won on all metrics, that'd be the one everyone used.)

Why choose PEGs in general?

PEGs strike a pretty good balance:

  • They're comparatively easy to write and maintain
  • They usually give great error messages
  • Their resource use isn't huge, though they're a little RAM hungry
  • They're a little above-average in speed, even on large documents
  • They can conveniently express most languages

PEGs are a fairly middle of the road choice. They're good-ish for most things.

Why choose JsPeg?

The library this library descends from, peg.js, did a remarkably good job of finding this balance, and providing stable, reliable tooling to do real world work.

Unfortunately, after a decade, David found other priorities, and JavaScript has moved on in that time. The new maintainer also found other interests, but did not pass the torch. The parent library has been largely unchanged for almost six years, and the domain and project have not been recovered.

In the meantime, this is one of the most important pieces of Javascript tooling around. In most cases there is not a sensible replacement.

As such, a fork was required.

JsPeg is a modernization. It's sort of a fork - the github repo is not inherited; only the code. The code has been static for half a decade; cutting the history away, and the tooling around it built for hosting that doesn't exist anymore should be discarded wholesale.

In the meantime, some of peg.js' most productive features, such as its IDE, should be re-written in modern tooling, like embedded vs.code.

But the parser generator?

It's a gem. Let's save it. All your grammars should be maintained.

It's not a new peg engine.

It's the peg engine you know, love, and use, re-tooled for a modern world.

Keywords

PEG

FAQs

Package last updated on 26 Nov 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts