in z3tracer/src/syntax.rs [354:370]
fn from_str(value: &str) -> Result<Self, Error> {
match value.find('!') {
None => {
let mut lexer = crate::lexer::Lexer::new(None, value.as_ref());
lexer.read_ident().map_err(|e| lexer.make_error(e))
}
Some(pos) => {
// The extended syntax `foo#4!7` is meant to be used for testing and debugging.
let mut lexer = crate::lexer::Lexer::new(None, &value.as_bytes()[0..pos]);
let mut id = lexer.read_ident().map_err(|e| lexer.make_error(e))?;
id.version = value[pos + 1..]
.parse()
.map_err(|e| lexer.make_error(RawError::InvalidInteger(e)))?;
Ok(id)
}
}
}