Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/heiwa4126/react-peggy1
Peggy と ts-pegjs で パーサをジェネレートして、React で 使ってみるテスト。Bun で TypeScript で Vite
https://github.com/heiwa4126/react-peggy1
Last synced: 5 days ago
JSON representation
Peggy と ts-pegjs で パーサをジェネレートして、React で 使ってみるテスト。Bun で TypeScript で Vite
- Host: GitHub
- URL: https://github.com/heiwa4126/react-peggy1
- Owner: heiwa4126
- Created: 2024-10-31T05:37:50.000Z (15 days ago)
- Default Branch: main
- Last Pushed: 2024-11-07T05:52:06.000Z (8 days ago)
- Last Synced: 2024-11-07T06:32:00.294Z (8 days ago)
- Language: TypeScript
- Size: 45.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# react-peggy1
[Peggy](https://peggyjs.org/)
と
[ts-pegjs](https://www.npmjs.com/package/ts-pegjs)
で [PEG](https://en.wikipedia.org/wiki/Parsing_expression_grammar) (Parsing Expression Grammar) 書いて、
パーサをジェネレートして、React で 使ってみるテスト。Bun で TypeScript で Vite
## ライブデモ
(GitHub Pages)
## ts-pegjs は止めた
ECMAScript(.mjs) と d.ts にした。(& sourcemap)
```sh
peggy --format es -m --dts -o lib/foo.mjs peg/foo.peggy
```ただ TypeScript(.ts) で出す設定は
package.json の run-scripts の `parser:names:ts` などに残しておく
(plugin オプションの設定が奇妙だから)。拡張子を .mjs にしてるのは、
上のディレクトリの package.json で CommonJS が指定されてても行けるように。## 開発
Vite で React で TypeScript で Bun なので普通に。
(Bun はたぶん npm でも pnpm でもいい)```sh
bun i
bun parse:calc # peg/calc.peggy を元に lib/calcParser.mjs と d.ts と .mapを生成
bun parse:names # peg/names.peggy を元に lib/calcParser.mjs と d.ts と .mapを生成
bun dev
bun run build & bun preview
```## 参考
- [Generating a Parser](https://peggyjs.org/documentation.html#generating-a-parser)
- [PEG.js で遊ぶ](https://tars0x9752.com/posts/try-peg-js) - `src/name.peggy`と`src/names.peggy`はここからコピペさしていただきました
- [パーサーなのかパーザーなのか - osyoyu.com/blog](https://osyoyu.com/blog/2024/06/17/003916)