pub struct ParserState {
pub allow_then: bool,
pub allow_of: bool,
pub allow_loop_control: bool,
pub allow_return: bool,
pub expr_end_at_eol: bool,
}Expand description
State that can be used to determine if certain parse trees are valid (e.g. if a checking if a
break expression is inside a loop).
The state cannot be mutated directly; it can only be changed when parsing using the Parser::try_parse_with_state method.
Fields§
§allow_then: boolWhether a then expression is allowed in the current context.
then expressions are only allowed after the conditions of if, while and loop
expressions.
allow_of: boolWhether an of expression is allowed in the current context.
of expressions are only allowed after the range of sum and product expressions.
allow_loop_control: boolWhether loop control expressions are allowed in the current context.
Loop control expressions are break and continue expressions. They are only allowed
inside loop expressions, such as while, loop, and for.
allow_return: boolWhether a return expression is allowed in the current context.
return expressions are only allowed inside function assignments.
expr_end_at_eol: boolWhether to require the current expression to end at the end of the line.
This is enabled on when parsing the expression of a return or break expression. The
expression returned by the return / break expression must lie on the same line as the
return / break keyword to prevent confusion in cases like:
if k > n return
sub = n - kWithout this requirement, the return expression would eagerly consume the assignment
sub = n - k, resulting in the above code being treated as:
if k > n {
return sub = n - k
}Which is almost certainly not what the user intended.
Trait Implementations§
Source§impl Clone for ParserState
impl Clone for ParserState
Source§fn clone(&self) -> ParserState
fn clone(&self) -> ParserState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more