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
' — это вот этот флаг rawp
rule token_foo() -> Result<Token, Error>
= is_raw:"'"? token:value_kind() {
let mut raw = false;
if let Some(_) = is_raw {
raw = true;
}
...
}