diff options
Diffstat (limited to 'src/lex.rs')
-rw-r--r-- | src/lex.rs | 25 |
1 files changed, 17 insertions, 8 deletions
@@ -3,6 +3,15 @@ use multipeek::multipeek; pub type Result<T> = core::result::Result<T, Box<dyn std::error::Error>>; pub struct TokenStream(Vec<Token>); +impl IntoIterator for TokenStream { + type Item = Token; + type IntoIter = std::vec::IntoIter<Token>; + + fn into_iter(self) -> Self::IntoIter { + self.0.into_iter() + } +} + #[derive(Clone, PartialEq, Debug)] pub enum LexicalError { InvalidIndentation, @@ -363,8 +372,8 @@ impl std::fmt::Display for Token { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { use Token::*; match self { - Word(token) => write!(f, "{}", token), - Num(token) => write!(f, "{}", token), + Word(val) => write!(f, "{}", val), + Num(val) => write!(f, "{}", val), Lit(lit) => write!(f, "{}", lit), Sep(sep) => write!(f, "{}", sep), Indent(i) => write!(f, "\n{}", " ".repeat(*i)), @@ -376,12 +385,12 @@ impl std::fmt::Display for Literal { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { use Literal::*; match self { - Char(token) => write!(f, "'{}'", token), - SingleLineString(token) => write!(f, "\"{}\"", token), - MultiLineString(token) => write!(f, "\"\"\"{}\"\"\"", token), - Comment(token) => write!(f, "#{}", token), - DocComment(token) => write!(f, "##{}", token), - MultiLineComment(token) => write!(f, "#[{}]#", token), + Char(val) => write!(f, "'{}'", val), + SingleLineString(val) => write!(f, "\"{}\"", val), + MultiLineString(val) => write!(f, "\"\"\"{}\"\"\"", val), + Comment(val) => write!(f, "#{}", val), + DocComment(val) => write!(f, "##{}", val), + MultiLineComment(val) => write!(f, "#[{}]#", val), } } } |