# langkit

> DSL and expression interpreter toolkit

Latest version **0.1.0** (published 2023-01-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install langkit
pnpm add langkit
yarn add langkit
bun add langkit
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2023-01-25 |
| First published | 2022-12-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 41.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Didier Demoniere |
| Maintainers | didierdemoniere |
| Keywords | lexer, tokenizer, parser, generator, compiler |

## Links

- npm: https://www.npmjs.com/package/langkit
- Repository: https://github.com/didierdemoniere/langkit
- Homepage: https://github.com/didierdemoniere/langkit#readme
- Issues: https://github.com/didierdemoniere/langkit/issues
- npm.io page: https://npm.io/package/langkit

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 0.1.0 (latest) — 2023-01-25
- 0.0.1 — 2022-12-16

## README

# langkit

A compact and expressive DSL and expression interpreter toolkit

## Install

```
$ npm install langkit
```

## Usage

```js
import { createLexer, createParser } from 'langkit';

const calcLexer = createLexer({
  plus: /\+/,
  number: /\d+(?:\.\d+)?/,
  space: {
    pattern: /\s+/,
    skip: true,
  },
});

const calculate = createParser(calcLexer, (h) => {
  return h.fromTokens(['number', 'plus', 'number'], ([left, _, right]) => {
    return Number(left.value) + Number(right.value);
  });
});

console.log(calculate('5 + 45'));
// => 50
```

## examples

- [calculator](https://github.com/didierdemoniere/langkit/tree/main/src/examples/calculator.ts)
- [JSON parser](https://github.com/didierdemoniere/langkit/tree/main/src/examples/json.ts)

---
_Source: https://npm.io/package/langkit · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
