aboutsummaryrefslogtreecommitdiff
path: root/src/lex.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lex.rs')
-rw-r--r--src/lex.rs25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/lex.rs b/src/lex.rs
index 01b24c5..396c06d 100644
--- a/src/lex.rs
+++ b/src/lex.rs
@@ -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),
}
}
}