Macro wast::custom_keyword
source · macro_rules! custom_keyword { ($name:ident) => { ... }; ($name:ident = $kw:expr) => { ... }; }
Expand description
A macro to create a custom keyword parser.
This macro is invoked in one of two forms:
// keyword derived from the Rust identifier:
wast::custom_keyword!(foo);
// or an explicitly specified string representation of the keyword:
wast::custom_keyword!(my_keyword = "the-wasm-keyword");
This can then be used to parse custom keyword for custom items, such as:
use wast::parser::{Parser, Result, Parse};
struct InlineModule<'a> {
inline_text: &'a str,
}
mod kw {
wast::custom_keyword!(inline);
}
// Parse an inline string module of the form:
//
// (inline "(module (func))")
impl<'a> Parse<'a> for InlineModule<'a> {
fn parse(parser: Parser<'a>) -> Result<Self> {
parser.parse::<kw::inline>()?;
Ok(InlineModule {
inline_text: parser.parse()?,
})
}
}
Note that the keyword name can only start with a lower-case letter, i.e. ‘a’..‘z’.