edlang/logos/index.html
2024-07-26 09:42:18 +00:00

23 lines
8.2 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.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Logos"><title>logos - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-dd39b87e5fcfba68.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="logos" data-themes="" data-resource-suffix="" data-rustdoc-version="1.80.0 (051478957 2024-07-21)" data-channel="1.80.0" data-search-js="search-d52510db62a78183.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-118b08c4c78b968e.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-20a3ad099b048cf2.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-df360f571f6edeae.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button><a class="logo-container" href="../logos/index.html"><img src="https://maciej.codes/kosz/logos.png" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../logos/index.html"><img src="https://maciej.codes/kosz/logos.png" alt="logo"></a><h2><a href="../logos/index.html">logos</a><span class="version">0.14.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li><li><a href="#derives">Derive Macros</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">logos</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/logos/lib.rs.html#1-270">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><img src="https://raw.githubusercontent.com/maciejhirsz/logos/master/logos.svg?sanitize=true" alt="Logos logo" width="250" align="right">
<h2 id="logos"><a class="doc-anchor" href="#logos">§</a>Logos</h2>
<p><em>Create ridiculously fast Lexers.</em></p>
<p><strong>Logos</strong> has two goals:</p>
<ul>
<li>To make it easy to create a Lexer, so you can focus on more complex problems.</li>
<li>To make the generated Lexer faster than anything youd write by hand.</li>
</ul>
<p>To achieve those, <strong>Logos</strong>:</p>
<ul>
<li>Combines all token definitions into a single <a href="https://en.wikipedia.org/wiki/Deterministic_finite_automaton">deterministic state machine</a>.</li>
<li>Optimizes branches into <a href="https://en.wikipedia.org/wiki/Lookup_table">lookup tables</a> or <a href="https://en.wikipedia.org/wiki/Branch_table">jump tables</a>.</li>
<li>Prevents <a href="https://en.wikipedia.org/wiki/ReDoS">backtracking</a> inside token definitions.</li>
<li><a href="https://en.wikipedia.org/wiki/Loop_unrolling">Unwinds loops</a>, and batches reads to minimize bounds checking.</li>
<li>Does all of that heavy lifting at compile time.</li>
</ul>
<p>See the <a href="https://maciejhirsz.github.io/logos/">Logos handbook</a> for additional documentation and usage examples.</p>
</div></details><h2 id="reexports" class="section-header">Re-exports<a href="#reexports" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name" id="reexport.Source"><code>pub use crate::source::<a class="trait" href="source/trait.Source.html" title="trait logos::source::Source">Source</a>;</code></div></li></ul><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="source/index.html" title="mod logos::source">source</a></div><div class="desc docblock-short">This module contains a bunch of traits necessary for processing byte strings.</div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Lexer.html" title="struct logos::Lexer">Lexer</a></div><div class="desc docblock-short"><code>Lexer</code> is the main struct of the crate that allows you to read through a
<code>Source</code> and produce tokens for enums implementing the <code>Logos</code> trait.</div></li><li><div class="item-name"><a class="struct" href="struct.Skip.html" title="struct logos::Skip">Skip</a></div><div class="desc docblock-short">Type that can be returned from a callback, informing the <code>Lexer</code>, to skip
current token match. See also <a href="./fn.skip.html"><code>logos::skip</code></a>.</div></li><li><div class="item-name"><a class="struct" href="struct.SpannedIter.html" title="struct logos::SpannedIter">SpannedIter</a></div><div class="desc docblock-short">Iterator that pairs tokens with their position in the source.</div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.Filter.html" title="enum logos::Filter">Filter</a></div><div class="desc docblock-short">Type that can be returned from a callback, either producing a field
for a token, or skipping it.</div></li><li><div class="item-name"><a class="enum" href="enum.FilterResult.html" title="enum logos::FilterResult">FilterResult</a></div><div class="desc docblock-short">Type that can be returned from a callback, either producing a field
for a token, skipping it, or emitting an error.</div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.Logos.html" title="trait logos::Logos">Logos</a></div><div class="desc docblock-short">Trait implemented for an enum representing all tokens. You should never have
to implement it manually, use the <code>#[derive(Logos)]</code> attribute on your enum.</div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.skip.html" title="fn logos::skip">skip</a></div><div class="desc docblock-short">Predefined callback that will inform the <code>Lexer</code> to skip a definition.</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.Span.html" title="type logos::Span">Span</a></div><div class="desc docblock-short">Byte range in the source.</div></li></ul><h2 id="derives" class="section-header">Derive Macros<a href="#derives" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="derive" href="derive.Logos.html" title="derive logos::Logos">Logos</a></div></li></ul></section></div></main></body></html>