Socket
Book a DemoInstallSign in
Socket

dslap

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dslap

Domain specific languages and parsers (d-slap for short as I'm very immature)

latest
Source
npmnpm
Version
0.0.9
Version published
Maintainers
1
Created
Source

D-SLAP

Domain-specific languages and parsers

This README contains brief summaries. For more information, look at the documentation in the source files for the parsers, or see the unit tests.

Simple parser

Parses expressions consisting of:

  • Entities - an entity is a single character

  • Groups - a group is contained within a start character and an end character. The contents of a group may include other entities and groups.

The comprehension parser uses the simple parser. Syntax specifications for comprehensions are given as expressions in the comprehension language.

Comprehension language and parser

The comprehension language defines a way to specify comprehension syntaxes. A comprehension syntax is parsed against this specification using the simple parser. The comprehension parser is a factory which returns a generated parser, given a language specification. The parser uses a regular expression, so should perform very well as the actual string parsing is done by native code.

Comprehensions may consist of keywords and named capture groups. They may be nested within subgroups to provide choices or to make them optional.

The associated unit test demonstrates using this engine to parse AngularJS-like ngOptions comprehension expressions.

Recursive parser

Specialised for parsing languages that permit recursive nesting. Group start and end markers, and entities may consist of multiple characters.

This parser is capable of backtracking if the "backtrack" option is set.

This parser is used by the arithmetic evaluator

Arithmetic parser, language, and evaluator

The arithmetic language is a JavaScript-like language which supports members, subscripts, function calls, and most other JavaScript operators that do not cause side effects (so no =/++/--).

The arithmetic parser parses an expression that conforms to the arithmetic language. It transforms the parse tree to an expression tree and returns a function which (when given a context) will apply the expression to the context and return the result. If the expression identifies a variable, then it is also possible to assign to the variable that the expression refers to.

The expression tree provides a chain of functions that evaluate each part of the expression, feeding their result to functions higher in the chain. Hence, while parsing an expression may be slow, subsequently evaluating the expression in a given context is fast (as is assignment).

Assigning directly to properties of the context will not work unless the "rawScope" option is set. Attempts to access a non-existant context-level variable will result in an exception unless the "notStrict" option is set.

Keywords

d-slap

FAQs

Package last updated on 25 Sep 2015

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