Files
awesome-awesomeness/html/pest.html
2025-07-18 22:22:32 +02:00

153 lines
7.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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 books (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>