p
Size: a a a
p
p
DS
DS
D
D
EG
nom::IResult
, но получается, закономерно, фигня вместо ошибокDS
D
p
nom::IResult
, но получается, закономерно, фигня вместо ошибокEG
p
EG
'
— не выполнять токенEG
'
пририсован, скажем, к числуEG
p
rule token_foo() -> Result<Token, Error>
= "'" token:token() {
match token {
Token::List() => Err(),
t => Ok(t),
}
}
p
EG
enum ValueKind<'a> {
Integer(i64),
Float(f64),
Symbol(&'a str),
String(String),
List(List<Value<'a>>),
}
struct Value<'a> {
raw: bool,
kind: ValueKind<'a>,
}
EG
'
— это вот этот флаг raw
p
rule token_foo() -> Result<Token, Error>
= is_raw:"'"? token:value_kind() {
let mut raw = false;
if let Some(_) = is_raw {
raw = true;
}
...
}