Struct Language
pub struct Language(/* private fields */);
Expand description
An opaque object that defines how to parse a particular language. The code
for each Language
is generated by the Tree-sitter CLI.
Implementations§
§impl Language
impl Language
pub fn new(builder: LanguageFn) -> Language
pub fn name(&self) -> Option<&'static str>
pub fn name(&self) -> Option<&'static str>
Get the name of this language. This returns None
in older parsers.
pub fn version(&self) -> usize
👎Deprecated since 0.25.0: Use abi_version instead
pub fn version(&self) -> usize
Get the ABI version number that indicates which version of the
Tree-sitter CLI that was used to generate this Language
.
pub fn abi_version(&self) -> usize
pub fn abi_version(&self) -> usize
Get the ABI version number that indicates which version of the
Tree-sitter CLI that was used to generate this Language
.
pub fn metadata(&self) -> Option<LanguageMetadata>
pub fn metadata(&self) -> Option<LanguageMetadata>
Get the metadata for this language. This information is generated by the
CLI, and relies on the language author providing the correct metadata in
the language’s tree-sitter.json
file.
See also [LanguageMetadata
].
pub fn node_kind_count(&self) -> usize
pub fn node_kind_count(&self) -> usize
Get the number of distinct node types in this language.
pub fn parse_state_count(&self) -> usize
pub fn parse_state_count(&self) -> usize
Get the number of valid states in this language.
pub fn supertypes(&self) -> &[u16]
pub fn supertypes(&self) -> &[u16]
Get a list of all supertype symbols for the language.
pub fn subtypes_for_supertype(&self, supertype: u16) -> &[u16]
pub fn subtypes_for_supertype(&self, supertype: u16) -> &[u16]
Get a list of all subtype symbols for a given supertype symbol.
pub fn node_kind_for_id(&self, id: u16) -> Option<&'static str>
pub fn node_kind_for_id(&self, id: u16) -> Option<&'static str>
Get the name of the node kind for the given numerical id.
pub fn id_for_node_kind(&self, kind: &str, named: bool) -> u16
pub fn id_for_node_kind(&self, kind: &str, named: bool) -> u16
Get the numeric id for the given node kind.
pub fn node_kind_is_named(&self, id: u16) -> bool
pub fn node_kind_is_named(&self, id: u16) -> bool
Check if the node type for the given numerical id is named (as opposed to an anonymous node type).
pub fn node_kind_is_visible(&self, id: u16) -> bool
pub fn node_kind_is_visible(&self, id: u16) -> bool
Check if the node type for the given numerical id is visible (as opposed to a hidden node type).
pub fn node_kind_is_supertype(&self, id: u16) -> bool
pub fn node_kind_is_supertype(&self, id: u16) -> bool
Check if the node type for the given numerical id is a supertype.
pub fn field_count(&self) -> usize
pub fn field_count(&self) -> usize
Get the number of distinct field names in this language.
pub fn field_name_for_id(&self, field_id: u16) -> Option<&'static str>
pub fn field_name_for_id(&self, field_id: u16) -> Option<&'static str>
Get the field name for the given numerical id.
pub fn field_id_for_name(
&self,
field_name: impl AsRef<[u8]>,
) -> Option<NonZero<u16>>
pub fn field_id_for_name( &self, field_name: impl AsRef<[u8]>, ) -> Option<NonZero<u16>>
Get the numerical id for the given field name.
pub fn next_state(&self, state: u16, id: u16) -> u16
pub fn next_state(&self, state: u16, id: u16) -> u16
Get the next parse state. Combine this with
lookahead_iterator
to
generate completion suggestions or valid symbols in error nodes.
Example:
let state = language.next_state(node.parse_state(), node.grammar_id());
pub fn lookahead_iterator(&self, state: u16) -> Option<LookaheadIterator>
pub fn lookahead_iterator(&self, state: u16) -> Option<LookaheadIterator>
Create a new lookahead iterator for this language and parse state.
This returns None
if state is invalid for this language.
Iterating [LookaheadIterator
] will yield valid symbols in the given
parse state. Newly created lookahead iterators will return the ERROR
symbol from [LookaheadIterator::current_symbol
].
Lookahead iterators can be useful to generate suggestions and improve
syntax error diagnostics. To get symbols valid in an ERROR
node, use the
lookahead iterator on its first leaf node state. For MISSING
nodes, a
lookahead iterator created on the previous non-extra leaf node may be
appropriate.
Trait Implementations§
impl Eq for Language
impl Send for Language
impl StructuralPartialEq for Language
impl Sync for Language
Auto Trait Implementations§
impl Freeze for Language
impl RefUnwindSafe for Language
impl Unpin for Language
impl UnwindSafe for Language
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more