153 lines
7.3 KiB
HTML
153 lines
7.3 KiB
HTML
<h1 id="awesome-pest.-the-elegant-parser-awesome">Awesome Pest. The
|
||
Elegant Parser <a href="https://awesome.re"><img
|
||
src="https://awesome.re/badge.svg" alt="Awesome" /></a></h1>
|
||
<p><a
|
||
href="https://github.com/pest-parser/pest/"><img src="https://avatars.githubusercontent.com/u/26044607" align="right" width="100"></a></p>
|
||
<blockquote>
|
||
<p>A curated list of resources, projects, and tools using or for the
|
||
pest parser generator in Rust</p>
|
||
</blockquote>
|
||
<p>pest is a general purpose parser written in Rust with a focus on
|
||
accessibility, correctness, and performance. It uses parsing expression
|
||
grammars (or <a
|
||
href="https://en.wikipedia.org/wiki/Parsing_expression_grammar">PEG</a>)
|
||
as input, which are similar in spirit to regular expressions, but which
|
||
offer the enhanced expressivity needed to parse complex languages.</p>
|
||
<p>Contributions welcome! Read the <a
|
||
href="contributing.md">contribution guidelines</a> first.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#resources">Resources</a></li>
|
||
<li><a href="#projects">Projects</a></li>
|
||
<li><a href="#tooling">Tooling</a></li>
|
||
</ul>
|
||
<h2 id="resources">Resources</h2>
|
||
<ul>
|
||
<li><a href="https://pest.rs/book">Book</a> - The recommended way to
|
||
start parsing with pest is to read this official book.</li>
|
||
<li><a href="https://docs.rs/pest">API reference on docs.rs</a></li>
|
||
<li><a href="https://pest.rs/#editor">fiddle editor on pest.rs</a> -
|
||
Play with grammars and share them on the official website (and format
|
||
them!).</li>
|
||
<li><a href="https://gitter.im/pest-parser/pest">Gitter</a></li>
|
||
<li><a href="https://discord.gg/XEGACtWpT2">Discord</a></li>
|
||
<li><a href="https://github.com/pest-parser/pest/discussions">GitHub
|
||
Discussions</a></li>
|
||
</ul>
|
||
<h2 id="projects">Projects</h2>
|
||
<p>Here are some example projects using pest:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/pest-parser/pest/blob/master/meta/src/grammar.pest">pest_meta</a>
|
||
- The pest itself is bootstrapped using pest.</li>
|
||
<li><a href="https://github.com/shnewto/ashpaper">AshPaper</a> - Rust
|
||
Inpterpreter for Esopo language AshPaper conceived by William
|
||
Hicks.</li>
|
||
<li><a href="https://github.com/mitnk/cicada">cicada</a> - An old-school
|
||
bash-like Unix shell written in Rust.</li>
|
||
<li><a href="https://github.com/kivikakk/comrak">comrak</a> - CommonMark
|
||
+ GFM compatible Markdown parser and renderer.</li>
|
||
<li><a href="https://github.com/cch123/elastic-rs">elastic-rs</a> -
|
||
Convert bool expressions to Elasticsearch DSL in Rust.</li>
|
||
<li><a
|
||
href="https://github.com/sunng87/handlebars-rust">handlebars-rust</a> -
|
||
Rust templating with Handlebars.</li>
|
||
<li><a href="https://github.com/Luz/hexdino">hexdino</a> - A hex editor
|
||
with vim like keybindings written in Rust.</li>
|
||
<li><a href="https://github.com/mitsuhiko/insta">insta</a> - A snapshot
|
||
testing library for rust.</li>
|
||
<li><a href="https://github.com/yamafaktory/jql">jql</a> - A JSON Query
|
||
Language CLI tool.</li>
|
||
<li><a href="https://github.com/callum-oakley/json5-rs">json5-rs</a> - A
|
||
Rust JSON5 serializer and deserializer which speaks Serde.</li>
|
||
<li><a href="https://github.com/svenstaro/mt940-rs">mt940</a> - A MT940
|
||
parser in Rust.</li>
|
||
<li><a href="https://github.com/jturner314/py_literal">py_literal</a> -
|
||
Rust crate for parsing/formatting Python literals.</li>
|
||
<li><a href="https://github.com/jarcane/rouler">rouler</a> - An easy to
|
||
use dice rolling library for Rust.</li>
|
||
<li><a href="https://github.com/lwandrebeck/RuSh">RuSh</a> - RuSh aims
|
||
to be a bash compatible shell with candies, written in Rust.</li>
|
||
<li><a href="https://github.com/wahn/rs_pbrt">rs_pbrt</a> - Rust crate
|
||
to implement a counterpart to the PBRT book’s (3rd edition) C++
|
||
code.</li>
|
||
<li><a href="https://github.com/dgraham/stache">stache</a> - A Mustache
|
||
template compiler.</li>
|
||
<li><a href="https://github.com/Keats/tera">tera</a> - A template engine
|
||
for Rust based on Jinja2/Django.</li>
|
||
<li><a href="https://github.com/ZoKrates/ZoKrates">ZoKrates</a> - A
|
||
toolbox for zkSNARKs on Ethereum.</li>
|
||
<li><a href="https://github.com/timberio/vector">Vector</a> - A
|
||
high-performance observability data pipeline.</li>
|
||
<li><a href="https://github.com/huacnlee/autocorrect">AutoCorrect</a> -
|
||
A linter and formatter to help you to improve copywriting, correct
|
||
spaces, words, and punctuations between CJK (Chinese, Japanese,
|
||
Korean).</li>
|
||
<li><a href="https://github.com/aofdev/yaml-peg">yaml-peg</a> - PEG
|
||
parser for YAML written in Rust.</li>
|
||
<li><a href="https://github.com/abhimanyu003/qubit">qubit</a> - A handy
|
||
calculator, based on Rust and WebAssembly.</li>
|
||
<li><a href="https://github.com/Geobert/caith">caith</a> - A dice roller
|
||
crate.</li>
|
||
<li><a href="https://github.com/yoav-lavi/melody">Melody</a> - Melody is
|
||
a language that compiles to regular expressions and aims to be more
|
||
easily readable and maintainable.</li>
|
||
<li><a href="https://github.com/AltaModaTech/pta-parser/">PTA-Parser</a>
|
||
- A Plain Text Accounting parser built in Rust for <a
|
||
href="https://github.com/beancount/beancount">Beancount</a>, <a
|
||
href="https://github.com/ledger/ledger">Ledger</a>, and other PTA
|
||
formats.</li>
|
||
<li><a href="https://github.com/keadex/keadex">Keadex Mina</a> - Open
|
||
Source, serverless IDE to code with C4-PlantUML and organize at a scale
|
||
C4 model diagrams.</li>
|
||
<li><a
|
||
href="https://github.com/rust-utilities/liquid-grammar-pest/">Liquid
|
||
Grammar</a> - Generate <code>Pairs</code> and/or <code>Rules</code> for
|
||
<a href="https://shopify.github.io/liquid/">Shopify</a> Liquid
|
||
(hash-tags <em>not-sponsored</em> or <em>affiliated</em>) for use in
|
||
consuming crates</li>
|
||
<li><a href="https://code.rosaelefanten.org/ws2markdown">ws2markdown</a>
|
||
- Converts WordStar documents into Markdown files.</li>
|
||
</ul>
|
||
<h2 id="tooling">Tooling</h2>
|
||
<h3 id="ide-support">IDE Support</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/pest-parser/pest-ide-tools">pest IDE
|
||
tools</a> - A main repository with LSP server and VSCode extension.</li>
|
||
<li><a
|
||
href="https://marketplace.visualstudio.com/items?itemName=pest.pest-ide-tools">VSCode
|
||
Extension</a></li>
|
||
<li><a href="https://plugins.jetbrains.com/plugin/12046-pest">IntelliJ
|
||
IDEA Plugin</a></li>
|
||
<li><a href="https://github.com/pest-parser/pest.vim">pest.vim</a></li>
|
||
<li><a href="https://github.com/pest-parser/pest-fmt">pest-fmt</a> - It
|
||
can help to format pest grammars.</li>
|
||
<li><a href="https://github.com/tomtau/pest-web-debug">pest web
|
||
debugger</a> - Try it <a
|
||
href="https://tomtau.github.io/pest-web-debug/">online</a>.</li>
|
||
</ul>
|
||
<h3 id="boilerplate-reduction-and-testing">Boilerplate reduction and
|
||
testing</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/pest-parser/ast">pest-ast</a> - It can
|
||
help to reduce boilerplate when converting pest parse trees to abstract
|
||
syntax trees.</li>
|
||
<li><a href="https://crates.io/crates/pest_consume">pest_consume</a> -
|
||
This crate can help with the parse tree traversing boilerplate.</li>
|
||
<li><a href="https://crates.io/crates/pest-test">pest-test</a> - It is a
|
||
testing framework for pest grammars.</li>
|
||
<li><a
|
||
href="https://crates.io/crates/pest_ascii_tree">pest_ascii_tree</a> -
|
||
Output <code>Pairs</code> in a tree on the console</li>
|
||
</ul>
|
||
<h3 id="cli-debugger">CLI Debugger</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://docs.rs/pest_debugger/latest/pest_debugger/">pest_debugger</a>
|
||
- It is a crate for debugging pest grammars. It can be used as a CLI
|
||
tool or as a library. <a href="debugger.md">See instructions for using
|
||
the CLI debugger</a>.</li>
|
||
</ul>
|
||
<p><a href="https://github.com/pest-parser/awesome-pest">pest.md
|
||
Github</a></p>
|