Skip to content

Writing a custom parser is a fairly common need. Although there are already parser combinators in others languages, TypeScript provides a powerful and well-structured foundation for building this. Common parser combinators’ weakness are error handling and ambiguity resolving, but these are ts-parsec’s important features. Additionally, ts-parsec …

License

microsoft/ts-parsec

Repository files navigation

ts-parsec

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Using ts-parsec with npm

npm install -g typescript-parsec

Building this repo

yarn
yarn build
yarn test

Packages

  • ts-parsec: Parser combinator for TypeScript
  • tspc-test: Unit test project
  • tspc-utilities: Code generator for developing ts-parsec
    • At this moment, running npm run update will write overloadings for alt and seq for you

Introduction

ts-parsec is a parser combinator library prepared for typescript. By using this library, you are able to create parsers very quickly using just a few lines of code. It provides the following features:

  • Tokenizer based on regular expressions. This tokenizer is designed for convenience. For some cases its performance may be unsatisfying. In this case, you could write your own tokenizer. It is very easy to plug your tokenizer into ts-parsec.
  • Parser combinators.
  • The ability to support recursive syntax.

You are recommended to learn EBNF before using this library.

Please read Getting Started for ramping up, or our document page for deeper understanding.

More Examples

In the Future

Following combinators will be released soon:

  • A context sensitive apply combinator.

Context sensitive tokenizer is also comming.

About

Writing a custom parser is a fairly common need. Although there are already parser combinators in others languages, TypeScript provides a powerful and well-structured foundation for building this. Common parser combinators’ weakness are error handling and ambiguity resolving, but these are ts-parsec’s important features. Additionally, ts-parsec …

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published