pub fn lex(input: &str) -> Result<Vec<Token>, LexerError>
Create a vec of Terminals from a string. Can fail, and will return an error if it does.