Skip to content

Commit 372f8ae

Browse files
committed
Refactored 'inflow' abstraction into 'infinite iterator'
1 parent d386c66 commit 372f8ae

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+292
-269
lines changed

Cargo.lock

+9-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ members = [
3232
"src/representations/interpreter_api",
3333
"src/support/std_ext",
3434
"src/support/compiler",
35-
"src/support/inflow",
35+
"src/support/infinite_iterator",
3636
"src/support/text",
3737
"src/representations/token",
3838
"src/components/build_token",

src/components/build_ast/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ derivative.workspace = true
1010
derive_more.workspace = true
1111
diagnostics = { version = "0.1.0", path = "../../support/diagnostics" }
1212
indexmap.workspace = true
13-
inflow = { version = "0.1.0", path = "../../support/inflow" }
13+
infinite_iterator = { version = "0.1.0", path = "../../support/infinite_iterator" }
1414
lazy_format.workspace = true
1515
num.workspace = true
1616
num-bigint.workspace = true

src/components/build_ast/src/input.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
use inflow::Inflow;
1+
use infinite_iterator::InfinitePeekable;
22
use source_files::{Source, SourceFileKey, SourceFiles};
33
use std::{borrow::Borrow, fmt::Debug};
44
use token::{Token, TokenKind};
55

6-
pub struct Input<'a, I: Inflow<Token>> {
6+
pub struct Input<'a, I: InfinitePeekable<Token>> {
77
source_files: &'a SourceFiles,
8-
inflow: I,
8+
infinite_peekable: I,
99
key: SourceFileKey,
1010
}
1111

12-
impl<'a, I: Inflow<Token>> Debug for Input<'a, I> {
12+
impl<'a, I: InfinitePeekable<Token>> Debug for Input<'a, I> {
1313
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14-
f.debug_struct("Input<Inflow<Token>>").finish()
14+
f.debug_struct("Input<InfiniteIterator<Token>>").finish()
1515
}
1616
}
1717

1818
impl<'a, I> Input<'a, I>
1919
where
20-
I: Inflow<Token>,
20+
I: InfinitePeekable<Token>,
2121
{
22-
pub fn new(inflow: I, source_files: &'a SourceFiles, key: SourceFileKey) -> Self {
22+
pub fn new(infinite_peekable: I, source_files: &'a SourceFiles, key: SourceFileKey) -> Self {
2323
Self {
24-
inflow,
24+
infinite_peekable,
2525
source_files,
2626
key,
2727
}
2828
}
2929

3030
pub fn peek(&mut self) -> &Token {
31-
self.inflow.peek_nth(0)
31+
self.infinite_peekable.peek_nth(0)
3232
}
3333

3434
pub fn peek_nth(&mut self, n: usize) -> &Token {
35-
self.inflow.peek_nth(n)
35+
self.infinite_peekable.peek_nth(n)
3636
}
3737

3838
pub fn peek_n<const N: usize>(&mut self) -> [&Token; N] {
39-
self.inflow.peek_n::<N>()
39+
self.infinite_peekable.peek_n::<N>()
4040
}
4141

4242
pub fn peek_is(&mut self, token: impl Borrow<TokenKind>) -> bool {
@@ -49,7 +49,7 @@ where
4949
}
5050

5151
pub fn advance(&mut self) -> Token {
52-
self.inflow.next()
52+
self.infinite_peekable.next()
5353
}
5454

5555
pub fn eat(&mut self, token: impl Borrow<TokenKind>) -> bool {
@@ -102,6 +102,6 @@ where
102102
// Adds input to the front of the queue,
103103
// useful for partially consuming tokens during parsing.
104104
pub fn unadvance(&mut self, token: Token) {
105-
self.inflow.un_next(token)
105+
self.infinite_peekable.un_next(token)
106106
}
107107
}

src/components/build_ast/src/lib.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,25 @@ mod parse_util;
2525
use self::error::ParseError;
2626
pub use self::input::Input;
2727
use ast::AstFile;
28-
use inflow::Inflow;
28+
use infinite_iterator::InfinitePeekable;
2929
use source_files::{Source, SourceFileKey, SourceFiles};
3030
use std::mem::MaybeUninit;
3131
use token::{Token, TokenKind};
3232

3333
pub fn parse(
34-
tokens: impl Inflow<Token>,
34+
tokens: impl InfinitePeekable<Token>,
3535
source_files: &SourceFiles,
3636
key: SourceFileKey,
3737
) -> Result<AstFile, ParseError> {
3838
Parser::new(Input::new(tokens, source_files, key)).parse()
3939
}
4040

41-
pub struct Parser<'a, I: Inflow<Token>> {
41+
pub struct Parser<'a, I: InfinitePeekable<Token>> {
4242
pub input: Input<'a, I>,
4343
pub treat_string_literals_as_cstring_literals: bool,
4444
}
4545

46-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
46+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
4747
pub fn new(input: Input<'a, I>) -> Self {
4848
Self {
4949
input,

src/components/build_ast/src/make_error.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ use super::{
33
annotation::Annotation,
44
error::{ParseError, ParseErrorKind},
55
};
6-
use inflow::Inflow;
6+
use infinite_iterator::InfinitePeekable;
77
use source_files::Source;
88
use token::{Token, TokenKind};
99

10-
impl<I: Inflow<Token>> Parser<'_, I> {
10+
impl<I: InfinitePeekable<Token>> Parser<'_, I> {
1111
pub fn unexpected_token_is_next(&mut self) -> ParseError {
1212
let unexpected = self.input.advance();
1313
self.unexpected_token(&unexpected)

src/components/build_ast/src/parse_annotation.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ use super::{
44
error::{ParseError, ParseErrorKind},
55
};
66
use ast::Given;
7-
use inflow::Inflow;
7+
use infinite_iterator::InfinitePeekable;
88
use token::{Token, TokenKind};
99

10-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
10+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
1111
pub fn parse_annotation(&mut self) -> Result<Vec<Annotation>, ParseError> {
1212
// #[annotation_name]
1313
// ^

src/components/build_ast/src/parse_block.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use super::{Parser, error::ParseError};
22
use ast::Stmt;
3-
use inflow::Inflow;
3+
use infinite_iterator::InfinitePeekable;
44
use lazy_format::lazy_format;
55
use token::{Token, TokenKind};
66

7-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
7+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
88
pub fn parse_block(&mut self, to_begin_what_block: &str) -> Result<Vec<Stmt>, ParseError> {
99
self.ignore_newlines();
1010

src/components/build_ast/src/parse_enum.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ use crate::annotation::AnnotationKind;
33
use ast::{Enum, EnumMember};
44
use attributes::Privacy;
55
use indexmap::IndexMap;
6-
use inflow::Inflow;
6+
use infinite_iterator::InfinitePeekable;
77
use num::{BigInt, Zero};
88
use token::{Token, TokenKind};
99

10-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
10+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
1111
pub fn parse_enum(&mut self, annotations: Vec<Annotation>) -> Result<Enum, ParseError> {
1212
let source = self.source_here();
1313
assert!(self.input.advance().is_enum_keyword());

src/components/build_ast/src/parse_expr/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ mod primary;
33

44
use super::{ParseError, Parser, is_right_associative, is_terminating_token};
55
use ast::Expr;
6-
use inflow::Inflow;
6+
use infinite_iterator::InfinitePeekable;
77
use token::Token;
88

9-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
9+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
1010
pub fn parse_expr(&mut self) -> Result<Expr, ParseError> {
1111
let primary = self.parse_expr_primary()?;
1212
self.parse_operator_expr(0, primary)

src/components/build_ast/src/parse_expr/post/array_access.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use super::Parser;
22
use crate::error::ParseError;
33
use ast::{ArrayAccess, Expr, ExprKind};
4-
use inflow::Inflow;
4+
use infinite_iterator::InfinitePeekable;
55
use token::{Token, TokenKind};
66

7-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
7+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
88
pub fn parse_array_access(&mut self, subject: Expr) -> Result<Expr, ParseError> {
99
// subject[index]
1010
// ^

src/components/build_ast/src/parse_expr/post/member.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use super::Parser;
22
use crate::{error::ParseError, parse_util::into_plain_name};
33
use ast::{Expr, ExprKind};
44
use attributes::Privacy;
5-
use inflow::Inflow;
5+
use infinite_iterator::InfinitePeekable;
66
use token::{Token, TokenKind};
77

8-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
8+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
99
pub fn parse_member(&mut self, subject: Expr) -> Result<Expr, ParseError> {
1010
// subject.field_name
1111
// ^

src/components/build_ast/src/parse_expr/post/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ mod member;
44
use super::Parser;
55
use crate::error::ParseError;
66
use ast::Expr;
7-
use inflow::Inflow;
7+
use infinite_iterator::InfinitePeekable;
88
use token::{Token, TokenKind};
99

10-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
10+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
1111
pub fn parse_expr_primary_post(&mut self, mut base: Expr) -> Result<Expr, ParseError> {
1212
let mut ate_newline;
1313

src/components/build_ast/src/parse_expr/primary/call.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use super::Parser;
22
use crate::error::ParseError;
33
use ast::{Call, Expr, ExprKind, Name, TypeArg, Using};
4-
use inflow::Inflow;
4+
use infinite_iterator::InfinitePeekable;
55
use source_files::Source;
66
use token::{Token, TokenKind};
77

8-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
8+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
99
pub fn parse_call(
1010
&mut self,
1111
name: Name,

src/components/build_ast/src/parse_expr/primary/declare_assign.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use super::Parser;
22
use crate::error::ParseError;
33
use ast::{DeclareAssign, Expr, ExprKind};
4-
use inflow::Inflow;
4+
use infinite_iterator::InfinitePeekable;
55
use source_files::Source;
66
use token::{Token, TokenKind};
77

8-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
8+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
99
pub fn parse_declare_assign(
1010
&mut self,
1111
variable_name: String,

src/components/build_ast/src/parse_expr/primary/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ use ast::{
1010
Block, Conditional, Expr, ExprKind, Integer, TypeArg, TypeKind, UnaryMathOperator,
1111
UnaryOperation, UnaryOperator, While,
1212
};
13-
use inflow::Inflow;
13+
use infinite_iterator::InfinitePeekable;
1414
use std::ffi::CString;
1515
use token::{StringLiteral, StringModifier, Token, TokenKind};
1616

17-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
17+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
1818
pub fn parse_expr_primary(&mut self) -> Result<Expr, ParseError> {
1919
let expr = self.parse_expr_primary_base()?;
2020
self.parse_expr_primary_post(expr)

src/components/build_ast/src/parse_expr/primary/operator.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ use ast::{
44
BasicBinaryOperation, BasicBinaryOperator, BinaryOperator, Expr, ExprKind, Language,
55
ShortCircuitingBinaryOperation, ShortCircuitingBinaryOperator,
66
};
7-
use inflow::Inflow;
7+
use infinite_iterator::InfinitePeekable;
88
use source_files::Source;
99
use token::{Token, TokenKind};
1010

11-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
11+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
1212
pub fn parse_operator_expr(
1313
&mut self,
1414
precedence: usize,

src/components/build_ast/src/parse_expr/primary/static_member.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use super::Parser;
22
use crate::error::{ParseError, ParseErrorKind};
33
use ast::{Expr, ExprKind, Name, StaticMemberCall, StaticMemberValue, Type, TypeArg};
4-
use inflow::Inflow;
4+
use infinite_iterator::InfinitePeekable;
55
use source_files::Source;
66
use token::{Token, TokenKind};
77

8-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
8+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
99
pub fn parse_static_member(
1010
&mut self,
1111
type_name: Name,

src/components/build_ast/src/parse_expr/primary/struct_literal.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use super::{ParseError, Parser};
22
use ast::{Expr, ExprKind, FieldInitializer, FillBehavior, Language, Name, StructLiteral, Type};
3-
use inflow::Inflow;
3+
use infinite_iterator::InfinitePeekable;
44
use token::{Token, TokenKind};
55

6-
impl<'a, I: Inflow<Token>> Parser<'a, I> {
6+
impl<'a, I: InfinitePeekable<Token>> Parser<'a, I> {
77
pub fn parse_struct_literal(&mut self) -> Result<Expr, ParseError> {
88
// Type { x: VALUE, b: VALUE, c: VALUE, :d, :e, ..SPECIFIER }
99
// ^

0 commit comments

Comments
 (0)