[][src]Struct wast::parser::Cursor

pub struct Cursor<'a> { /* fields omitted */ }

An immutable cursor into a list of tokens.

This cursor cannot be mutated but can be used to parse more tokens in a list of tokens. Cursors are created from the Parser::step method. This is a very low-level parsing structure and you likely won't use it much.

Implementations

impl<'a> Cursor<'a>[src]

pub fn cur_span(&self) -> Span[src]

Returns the span of the next Token token.

Does not take into account whitespace or comments.

pub fn error(&self, msg: impl Display) -> Error[src]

Same as Parser::error, but works with the current token in this Cursor instead.

pub fn lparen(mut self: Self) -> Option<Self>[src]

Attempts to advance this cursor if the current token is a (.

If the current token is (, returns a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn rparen(mut self: Self) -> Option<Self>[src]

Attempts to advance this cursor if the current token is a ).

If the current token is ), returns a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn id(mut self: Self) -> Option<(&'a str, Self)>[src]

Attempts to advance this cursor if the current token is a Token::Id

If the current token is Id, returns the identifier minus the leading $ character as well as a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn keyword(mut self: Self) -> Option<(&'a str, Self)>[src]

Attempts to advance this cursor if the current token is a Token::Keyword

If the current token is Keyword, returns the keyword as well as a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn reserved(mut self: Self) -> Option<(&'a str, Self)>[src]

Attempts to advance this cursor if the current token is a Token::Reserved

If the current token is Reserved, returns the reserved token as well as a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn integer(mut self: Self) -> Option<(&'a Integer<'a>, Self)>[src]

Attempts to advance this cursor if the current token is a Token::Integer

If the current token is Integer, returns the integer as well as a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn float(mut self: Self) -> Option<(&'a Float<'a>, Self)>[src]

Attempts to advance this cursor if the current token is a Token::Float

If the current token is Float, returns the float as well as a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn string(mut self: Self) -> Option<(&'a [u8], Self)>[src]

Attempts to advance this cursor if the current token is a Token::String

If the current token is String, returns the byte value of the string as well as a new Cursor pointing at the rest of the tokens in the stream. Otherwise returns None.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn annotation(self) -> Option<(&'a str, Self)>[src]

Attempts to advance this cursor if the current token is a Token::Reserved and looks like the start of an annotation.

Annotations are a WebAssembly proposal for the text format which allows placing structured text inside of a text file, for example to specify the name section or other custom sections.

This function will attempt to see if the current token is the @foo part of the annotation. This requires the previous token to be ( and the current token is Reserved which starts with @ and has a nonzero length for the following name.

Note that this will skip unknown annoations. Only pre-registered annotations will be returned here.

This function will automatically skip over any comments, whitespace, or unknown annotations.

pub fn comment(mut self: Self) -> Option<(&'a str, Self)>[src]

Attempts to advance this cursor if the current token is a Token::LineComment or a Token::BlockComment

This function will only skip whitespace, no other tokens.

Trait Implementations

impl<'a> Clone for Cursor<'a>[src]

impl<'a> Copy for Cursor<'a>[src]

Auto Trait Implementations

impl<'a> !RefUnwindSafe for Cursor<'a>[src]

impl<'a> !Send for Cursor<'a>[src]

impl<'a> !Sync for Cursor<'a>[src]

impl<'a> Unpin for Cursor<'a>[src]

impl<'a> !UnwindSafe for Cursor<'a>[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.