Skip to content

Commit a66c6f3

Browse files
committed
(parser) ref: module organisation for visibility management
1 parent 58a9a4d commit a66c6f3

Some content is hidden

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

53 files changed

+536
-502
lines changed

src/parser/display.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//! Defines functions to display complex types, like options and vectors.
2+
3+
use core::fmt;
4+
5+
use crate::EMPTY;
6+
7+
/// Displays the fullness, with `..` if the content is still pushable
8+
pub const fn repr_fullness(full: bool) -> &'static str {
9+
if full { "" } else { ".." }
10+
}
11+
12+
/// Displays an option with the [`EMPTY`] string.
13+
#[expect(clippy::ref_option)]
14+
pub fn repr_option<T: fmt::Display>(opt: &Option<T>) -> String {
15+
opt.as_ref().map_or_else(|| EMPTY.to_owned(), T::to_string)
16+
}
17+
/// Displays an option with the [`EMPTY`] string.
18+
pub fn repr_option_vec<T: fmt::Display>(vec: &[Option<T>]) -> String {
19+
vec.iter().map(repr_option).collect::<Vec<_>>().join(", ")
20+
}
21+
22+
/// Displays a vector with the [`EMPTY`] string.
23+
pub fn repr_vec<T: fmt::Display>(vec: &[T]) -> String {
24+
vec.iter()
25+
.map(|node| format!("{node}"))
26+
.collect::<Vec<_>>()
27+
.join(", ")
28+
}

src/parser/keyword/attributes.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,14 @@
44

55
use core::fmt;
66

7-
use super::Ast;
87
use super::control_flow::traits::ControlFlow as _;
98
use super::sort::PushInNode;
109
use crate::lexer::api::Keyword;
1110
use crate::parser::modifiers::push::Push as _;
12-
use crate::parser::types::ListInitialiser;
13-
use crate::parser::types::binary::Binary;
14-
use crate::parser::types::braced_blocks::BracedBlock;
15-
use crate::parser::types::ternary::Ternary;
16-
use crate::parser::types::unary::Unary;
17-
use crate::parser::types::variable::Variable;
11+
use crate::parser::operators::api::{Binary, Ternary, Unary};
12+
use crate::parser::symbols::api::{BracedBlock, ListInitialiser};
13+
use crate::parser::tree::Ast;
14+
use crate::parser::variable::Variable;
1815

1916
/// Defines the attribute keywords.
2017
macro_rules! define_attribute_keywords {

src/parser/keyword/control_flow/keyword.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ use core::fmt;
55
use super::node::ControlFlowNode;
66
use super::traits::ControlFlow as _;
77
use crate::parser::keyword::sort::PushInNode;
8-
use crate::parser::modifiers::ast::can_push::CanPush as _;
98
use crate::parser::modifiers::push::Push as _;
10-
use crate::parser::types::Ast;
9+
use crate::parser::tree::Ast;
10+
use crate::parser::tree::api::CanPush as _;
1111

1212
impl From<ControlFlowKeyword> for Ast {
1313
fn from(keyword: ControlFlowKeyword) -> Self {

src/parser/keyword/control_flow/node.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ use super::types::parens_block::{ParensBlockCtrl, ParensBlockKeyword};
1414
use super::types::return_ctrl::ReturnCtrl;
1515
use super::types::semi_colon::{SemiColonCtrl, SemiColonKeyword};
1616
use super::types::typedef::TypedefCtrl;
17-
use crate::parser::modifiers::conversions::OperatorConversions;
1817
use crate::parser::modifiers::push::Push;
19-
use crate::parser::types::Ast;
20-
use crate::parser::types::braced_blocks::BracedBlock;
18+
use crate::parser::operators::api::OperatorConversions;
19+
use crate::parser::symbols::api::BracedBlock;
20+
use crate::parser::tree::Ast;
2121

2222
/// Derives a method of a [`ControlFlow`] trait for [`ControlFlowNode`] by
2323
/// directly applying the method on the corresponding control flow.

src/parser/keyword/control_flow/pushable.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
33
use core::{fmt, panic};
44

5-
use super::node::ControlFlowNode;
6-
use super::traits::ControlFlow as _;
5+
use crate::parser::keyword::control_flow::node::ControlFlowNode;
6+
use crate::parser::keyword::control_flow::traits::ControlFlow as _;
77
use crate::parser::keyword::sort::PushInNode;
8-
use crate::parser::types::Ast;
9-
use crate::parser::types::braced_blocks::BracedBlock;
8+
use crate::parser::symbols::api::BracedBlock;
9+
use crate::parser::tree::Ast;
1010

1111
/// Keywords that must be pushed into an existing control flow
1212
#[derive(Debug)]

src/parser/keyword/control_flow/traits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use core::fmt;
44

55
use crate::parser::modifiers::push::Push;
6-
use crate::parser::types::Ast;
6+
use crate::parser::tree::Ast;
77

88
/// trait specifies the methods that the control flows need to implement.
99
pub trait ControlFlow: Push + fmt::Display {

src/parser/keyword/control_flow/types/case.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
33
use core::{fmt, mem};
44

5+
use crate::parser::display::repr_fullness;
56
use crate::parser::keyword::control_flow::traits::ControlFlow;
67
use crate::parser::keyword::control_flow::types::repr_colon_option;
7-
use crate::parser::modifiers::conversions::OperatorConversions;
88
use crate::parser::modifiers::push::Push;
9-
use crate::parser::repr_fullness;
10-
use crate::parser::types::Ast;
11-
use crate::parser::types::braced_blocks::BracedBlock;
9+
use crate::parser::operators::api::OperatorConversions;
10+
use crate::parser::symbols::api::BracedBlock;
11+
use crate::parser::tree::Ast;
1212

1313
/// Keyword expects a colon and a node: `case x: y`
1414
#[derive(Debug, Default)]

src/parser/keyword/control_flow/types/colon_ast.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
33
use core::{fmt, mem};
44

5+
use crate::parser::display::repr_fullness;
56
use crate::parser::keyword::control_flow::node::ControlFlowNode;
67
use crate::parser::keyword::control_flow::traits::ControlFlow;
78
use crate::parser::keyword::control_flow::types::repr_colon_option;
8-
use crate::parser::modifiers::conversions::OperatorConversions;
99
use crate::parser::modifiers::push::Push;
10-
use crate::parser::repr_fullness;
11-
use crate::parser::types::Ast;
12-
use crate::parser::types::braced_blocks::BracedBlock;
10+
use crate::parser::operators::api::OperatorConversions;
11+
use crate::parser::symbols::api::BracedBlock;
12+
use crate::parser::tree::Ast;
1313

1414
/// Keyword expects a node and then a colon: `case 2:`
1515
#[derive(Debug)]

src/parser/keyword/control_flow/types/conditional.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
33
use core::fmt;
44

5+
use crate::parser::display::{repr_fullness, repr_option};
56
use crate::parser::keyword::control_flow::node::{ControlFlowNode, try_push_semicolon_control};
67
use crate::parser::keyword::control_flow::pushable::PushableKeyword;
78
use crate::parser::keyword::control_flow::traits::ControlFlow;
89
use crate::parser::keyword::sort::PushInNode as _;
9-
use crate::parser::modifiers::ast::can_push::AstPushContext;
10-
use crate::parser::modifiers::conversions::OperatorConversions;
1110
use crate::parser::modifiers::push::Push;
12-
use crate::parser::types::Ast;
13-
use crate::parser::types::parens::ParensBlock;
14-
use crate::parser::{repr_fullness, repr_option};
11+
use crate::parser::operators::api::OperatorConversions;
12+
use crate::parser::symbols::api::ParensBlock;
13+
use crate::parser::tree::Ast;
14+
use crate::parser::tree::api::AstPushContext;
1515

1616
/// `if` keyword
1717
#[derive(Debug, Default)]

src/parser/keyword/control_flow/types/do_while.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
33
use core::{fmt, mem};
44

5+
use crate::parser::display::repr_option;
56
use crate::parser::keyword::control_flow::node::{ControlFlowNode, try_push_semicolon_control};
67
use crate::parser::keyword::control_flow::traits::ControlFlow;
7-
use crate::parser::modifiers::conversions::OperatorConversions;
88
use crate::parser::modifiers::push::Push;
9-
use crate::parser::repr_option;
10-
use crate::parser::types::Ast;
11-
use crate::parser::types::braced_blocks::BracedBlock;
12-
use crate::parser::types::parens::ParensBlock;
9+
use crate::parser::operators::api::OperatorConversions;
10+
use crate::parser::symbols::api::{BracedBlock, ParensBlock};
11+
use crate::parser::tree::Ast;
1312

1413
/// `do` keyword
1514
#[derive(Debug, Default)]

0 commit comments

Comments
 (0)