# @cicada-lang/partech

> Parsing Techniques -- A language for writing grammars and generating parsers.

Latest version **0.2.5** (published 2022-12-04) · GPL-3.0-or-later license · 0 weekly downloads

## Install

```sh
npm install @cicada-lang/partech
pnpm add @cicada-lang/partech
yarn add @cicada-lang/partech
bun add @cicada-lang/partech
```

## Health

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

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

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.5 |
| Published | 2022-12-04 |
| First published | 2021-02-22 |
| Weekly downloads | 0 |
| License | GPL-3.0-or-later |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 375.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Maintainers | xieyuheng |

## Links

- npm: https://www.npmjs.com/package/@cicada-lang/partech
- Repository: https://github.com/cicada-lang/partech
- Homepage: https://github.com/cicada-lang/partech#readme
- Issues: https://github.com/cicada-lang/partech/issues
- npm.io page: https://npm.io/package/@cicada-lang/partech

## Dependencies (3)

- [picocolors](https://npm.io/package/picocolors.md) ^1.0.0
- [fast-deep-equal](https://npm.io/package/fast-deep-equal.md) ^3.1.3
- [regexp-match-indices](https://npm.io/package/regexp-match-indices.md) ^1.0.2

## Recent versions

- 0.2.5 (latest) — 2022-12-04
- 0.2.4 — 2022-12-04
- 0.2.3 — 2022-11-23
- 0.2.2 — 2022-10-29
- 0.2.1 — 2022-10-29
- 0.1.24 — 2022-10-29
- 0.1.23 — 2022-10-29
- 0.1.22 — 2022-09-30
- 0.1.21 — 2022-09-30
- 0.1.20 — 2022-04-17
- 0.1.19 — 2022-02-27
- 0.1.18 — 2022-01-25
- 0.1.17 — 2021-12-18
- 0.1.16 — 2021-12-18
- 0.1.15 — 2021-10-04
- … 15 more at https://npm.io/package/@cicada-lang/partech/versions

## README

# Partech

Parsing Techniques -- A language for writing grammars and generating parsers.

- Named after Dick Grune and Ceriel J.H. Jacobs' book ["Parsing Techniques -- A Practical Guide"](https://www.amazon.com/Parsing-Techniques-Practical-Monographs-Computer/dp/1441919015).
- Embedded in JavaScript/TypeScript.
- Inspired by [Invisible XML](https://homepages.cwi.nl/~steven/ixml/).
- Implements [Earley parser](https://en.wikipedia.org/wiki/Earley_parser),
  which can handle the full [CFG](https://en.wikipedia.org/wiki/Context-free_grammar).

## Usages

Install the package:

```sh
npm install @cicada-lang/partech
```

TODO This package is used in many languages of cicada project,
but the API of this package is not stable yet.

## Examples

TODO

## Thanks

Thank you, [Noam Chomsky](https://en.wikipedia.org/wiki/Noam_Chomsky), for [Generative grammar](https://en.wikipedia.org/wiki/Generative_grammar) and [Chomsky hierarchy](https://en.wikipedia.org/wiki/Chomsky_hierarchy).

Thank you, Dick Grune and Ceriel J.H. Jacobs, for writing a great textbook about parsing.

Thank you, [Steven Pemberton](https://homepages.cwi.nl/~steven/), for your works about XML and designing [the ABC programming language](<https://en.wikipedia.org/wiki/ABC_(programming_language)>).

## Development

```sh
npm install           # Install dependencies
npm run build         # Compile `src/` to `lib/`
npm run build:watch   # Watch the compilation
npm run format        # Format the code
npm run test          # Run test
npm run test:watch    # Watch the testing
```

## Contributions

To make a contribution, fork this project and create a pull request.

Please read the [STYLE-GUIDE.md](STYLE-GUIDE.md) before you change the code.

Remember to add yourself to [AUTHORS](AUTHORS).
Your line belongs to you, you can write a little
introduction to yourself but not too long.

It is assumed that all non draft PRs are ready to be merged.
If your PR is not ready to be merged yet, please make it a draft PR:

- [Creating draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests)
- [Changing a PR to draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request)

During the development of your PR, you can make use of
the [TODO.md](TODO.md) file to record ideas temporarily,
and this file should be clean again at the end of your development.

## License

[GPLv3](LICENSE)

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