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 provides a very easy to use programming interface, that could help people to build programming-language-scale parsers in just a few hours. This technology has already been used in Microsoft/react-native-tscodegen.
Перейти к файлу
Zihan Chen (MSFT) c56d4ca30e Bump version 2023-03-24 15:08:02 -07:00
.github/workflows Move repo to use yarn workspaces and lerna 2019-08-22 16:03:49 -07:00
doc Bump version 2023-03-24 15:08:02 -07:00
packages Bump version 2023-03-24 15:08:02 -07:00
.gitignore Execute codegen 2019-08-28 17:58:10 -07:00
.gitmodules delete submodule from react-native-tscodegen 2019-09-06 10:14:34 -07:00
CODE_OF_CONDUCT.md Initial commit 2019-08-20 16:41:45 -07:00
LICENSE Merge branch 'master' of C:\Code\Microsoft\react-native-tscodegen 2019-09-06 03:02:28 -07:00
Note.md ... 2019-08-05 23:33:11 -07:00
README.md Update README.md 2020-07-14 14:46:11 -07:00
SECURITY.md Initial commit 2019-09-06 00:32:14 -07:00
lerna.json Move repo to use yarn workspaces and lerna 2019-08-22 16:03:49 -07:00
package.json 0.1.0 2019-09-27 01:22:23 -07:00
yarn.lock Bump qs from 6.5.2 to 6.5.3 2023-03-23 19:37:58 -07:00

README.md

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.