difftastic/rustdoc/tree_sitter/ffi/fn.ts_parser_parse.html

45 lines
8.7 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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="Use the parser to parse some source code and create a syntax tree."><title>ts_parser_parse in tree_sitter::ffi - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="tree_sitter" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><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 fn"><!--[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">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../tree_sitter/index.html">tree_sitter</a><span class="version">0.25.10</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In tree_sitter::ffi</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../tree_sitter/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">tree_sitter</a>::<wbr><a href="index.html">ffi</a>::<wbr><a class="fn" href="#">ts_parser_parse</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/tree_sitter/bindings.rs.html#222-226">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub unsafe extern &quot;C&quot; fn ts_parser_parse(
self_: <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.pointer.html">*mut </a><a class="struct" href="struct.TSParser.html" title="struct tree_sitter::ffi::TSParser">TSParser</a>,
old_tree: <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.pointer.html">*const </a><a class="struct" href="struct.TSTree.html" title="struct tree_sitter::ffi::TSTree">TSTree</a>,
input: <a class="struct" href="struct.TSInput.html" title="struct tree_sitter::ffi::TSInput">TSInput</a>
) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.pointer.html">*mut </a><a class="struct" href="struct.TSTree.html" title="struct tree_sitter::ffi::TSTree">TSTree</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Use the parser to parse some source code and create a syntax tree.</p>
<p>If you are parsing this document for the first time, pass <code>NULL</code> for the
<code>old_tree</code> parameter. Otherwise, if you have already parsed an earlier
version of this document and the document has since been edited, pass the
previous syntax tree so that the unchanged parts of it can be reused.
This will save time and memory. For this to work correctly, you must have
already edited the old syntax tree using the <a href="fn.ts_tree_edit.html" title="fn tree_sitter::ffi::ts_tree_edit"><code>ts_tree_edit</code></a> function in a
way that exactly matches the source code changes.</p>
<p>The <a href="struct.TSInput.html" title="struct tree_sitter::ffi::TSInput"><code>TSInput</code></a> parameter lets you specify how to read the text. It has the
following three fields:</p>
<ol>
<li><a href="struct.TSInput.html#structfield.read" title="field tree_sitter::ffi::TSInput::read"><code>read</code></a>: A function to retrieve a chunk of text at a given byte offset
and (row, column) position. The function should return a pointer to the
text and write its length to the <a href="struct.TSInput.html#structfield.read" title="field tree_sitter::ffi::TSInput::read"><code>bytes_read</code></a> pointer. The parser does
not take ownership of this buffer; it just borrows it until it has
finished reading it. The function should write a zero value to the
<a href="struct.TSInput.html#structfield.read" title="field tree_sitter::ffi::TSInput::read"><code>bytes_read</code></a> pointer to indicate the end of the document.</li>
<li><a href="struct.TSInput.html#structfield.payload" title="field tree_sitter::ffi::TSInput::payload"><code>payload</code></a>: An arbitrary pointer that will be passed to each invocation
of the <a href="struct.TSInput.html#structfield.read" title="field tree_sitter::ffi::TSInput::read"><code>read</code></a> function.</li>
<li><a href="struct.TSInput.html#structfield.encoding" title="field tree_sitter::ffi::TSInput::encoding"><code>encoding</code></a>: An indication of how the text is encoded. Either
<code>TSInputEncodingUTF8</code> or <code>TSInputEncodingUTF16</code>.</li>
</ol>
<p>This function returns a syntax tree on success, and <code>NULL</code> on failure. There
are four possible reasons for failure:</p>
<ol>
<li>The parser does not have a language assigned. Check for this using the
<a href="fn.ts_parser_language.html" title="fn tree_sitter::ffi::ts_parser_language"><code>ts_parser_language</code></a> function.</li>
<li>Parsing was cancelled due to a timeout that was set by an earlier call to
the <a href="fn.ts_parser_set_timeout_micros.html" title="fn tree_sitter::ffi::ts_parser_set_timeout_micros"><code>ts_parser_set_timeout_micros</code></a> function. You can resume parsing from
where the parser left out by calling <a href="fn.ts_parser_parse.html" title="fn tree_sitter::ffi::ts_parser_parse"><code>ts_parser_parse</code></a> again with the
same arguments. Or you can start parsing from scratch by first calling
<a href="fn.ts_parser_reset.html" title="fn tree_sitter::ffi::ts_parser_reset"><code>ts_parser_reset</code></a>.</li>
<li>Parsing was cancelled using a cancellation flag that was set by an
earlier call to <a href="fn.ts_parser_set_cancellation_flag.html" title="fn tree_sitter::ffi::ts_parser_set_cancellation_flag"><code>ts_parser_set_cancellation_flag</code></a>. You can resume parsing
from where the parser left out by calling <a href="fn.ts_parser_parse.html" title="fn tree_sitter::ffi::ts_parser_parse"><code>ts_parser_parse</code></a> again with
the same arguments.</li>
<li>Parsing was cancelled due to the progress callback returning true. This callback
is passed in <a href="fn.ts_parser_parse_with_options.html" title="fn tree_sitter::ffi::ts_parser_parse_with_options"><code>ts_parser_parse_with_options</code></a> inside the <a href="struct.TSParseOptions.html" title="struct tree_sitter::ffi::TSParseOptions"><code>TSParseOptions</code></a> struct.</li>
</ol>
</div></details></section></div></main></body></html>