pub trait Parse: Sized { fn new() -> Self; fn set_input(&mut self, s: &str); fn set_skip_reg(&mut self, reg_str: &str); fn run<T: Product<Self>>(&mut self) -> Result<T, (String, usize)>; }