pub struct LanguageEnv<'a, I> { /* private fields */ }
Expand description
A type containing parsers for a specific language.
For some parsers there are two version where the parser which ends with a _
is a variant
which does not skip whitespace and comments after parsing the token itself.
Implementations§
Source§impl<'a, I> LanguageEnv<'a, I>
impl<'a, I> LanguageEnv<'a, I>
Sourcepub fn new<A, B, C, D, E, F, G>(
def: LanguageDef<A, B, C, D, E, F, G>,
) -> LanguageEnv<'a, I>
pub fn new<A, B, C, D, E, F, G>( def: LanguageDef<A, B, C, D, E, F, G>, ) -> LanguageEnv<'a, I>
Constructs a new parser from a language defintion
Sourcepub fn lex<'b, P>(&'b self, p: P) -> Lex<'a, 'b, P, I>where
P: Parser<I> + 'b,
pub fn lex<'b, P>(&'b self, p: P) -> Lex<'a, 'b, P, I>where
P: Parser<I> + 'b,
Creates a lexing parser from p
Sourcepub fn white_space<'b>(&'b self) -> WhiteSpace<'a, 'b, I>
pub fn white_space<'b>(&'b self) -> WhiteSpace<'a, 'b, I>
Skips spaces and comments
Sourcepub fn symbol<'b>(
&'b self,
name: &'static str,
) -> Lex<'a, 'b, Expected<With<TokensCmp<fn(char, char) -> bool, Chars<'static>, I>, Value<I, &'static str>>, &'static str>, I>
pub fn symbol<'b>( &'b self, name: &'static str, ) -> Lex<'a, 'b, Expected<With<TokensCmp<fn(char, char) -> bool, Chars<'static>, I>, Value<I, &'static str>>, &'static str>, I>
Parses a symbol, lexing the stream if it is successful
Sourcepub fn identifier<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, String>
pub fn identifier<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, String>
Parses an identifier, failing if it parses something that is a reserved identifier
pub fn identifier_<'b>(&'b self) -> LanguageParser<'a, 'b, I, String>
Sourcepub fn range_identifier<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, &'a str>where
I: RangeStream<Range = &'a str>,
pub fn range_identifier<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, &'a str>where
I: RangeStream<Range = &'a str>,
Parses an identifier, failing if it parses something that is a reserved identifier
pub fn range_identifier_<'b>(&'b self) -> LanguageParser<'a, 'b, I, &'a str>where
I: RangeStream<Range = &'a str>,
Sourcepub fn reserved<'b>(&'b self, name: &'static str) -> Reserved<'a, 'b, I>where
I::Range: 'b,
pub fn reserved<'b>(&'b self, name: &'static str) -> Reserved<'a, 'b, I>where
I::Range: 'b,
Parses the reserved identifier name
Sourcepub fn op<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, String>
pub fn op<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, String>
Parses an operator, failing if it parses something that is a reserved operator
pub fn op_<'b>(&'b self) -> LanguageParser<'a, 'b, I, String>
Sourcepub fn range_op<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, &'a str>where
I: RangeStream<Range = &'a str>,
pub fn range_op<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, &'a str>where
I: RangeStream<Range = &'a str>,
Parses an identifier, failing if it parses something that is a reserved identifier
pub fn range_op_<'b>(&'b self) -> LanguageParser<'a, 'b, I, &'a str>where
I: RangeStream<Range = &'a str>,
Sourcepub fn reserved_op<'b>(
&'b self,
name: &'static str,
) -> Lex<'a, 'b, Reserved<'a, 'b, I>, I>where
I::Range: 'b,
pub fn reserved_op<'b>(
&'b self,
name: &'static str,
) -> Lex<'a, 'b, Reserved<'a, 'b, I>, I>where
I::Range: 'b,
Parses the reserved operator name
pub fn reserved_op_<'b>(&'b self, name: &'static str) -> Reserved<'a, 'b, I>where
I::Range: 'b,
Sourcepub fn char_literal<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, char>
pub fn char_literal<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, char>
Parses a character literal taking escape sequences into account
pub fn char_literal_<'b>(&'b self) -> LanguageParser<'a, 'b, I, char>
Sourcepub fn string_literal<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, String>
pub fn string_literal<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, String>
Parses a string literal taking character escapes into account
pub fn string_literal_<'b>(&'b self) -> LanguageParser<'a, 'b, I, String>
Sourcepub fn angles<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
pub fn angles<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
Parses p
inside angle brackets
< p >
Sourcepub fn braces<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
pub fn braces<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
Parses p
inside braces
{ p }
Sourcepub fn brackets<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
pub fn brackets<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
Parses p
inside brackets
[ p ]
Sourcepub fn parens<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
pub fn parens<'b, P>(&'b self, parser: P) -> BetweenChar<'a, 'b, P, I>
Parses p
inside parentheses
( p )
Sourcepub fn integer<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, i64>
pub fn integer<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, i64>
Parses an integer
pub fn integer_<'b>(&'b self) -> LanguageParser<'a, 'b, I, i64>
Sourcepub fn float<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, f64>
pub fn float<'b>(&'b self) -> LexLanguageParser<'a, 'b, I, f64>
Parses a floating point number