1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
pub mod kconfig_help_property_parser;
pub mod kconfig_menu_node_parser;
pub mod kconfig_node_children_parser;
pub mod parser_traits;
pub mod kconfig_dependency_parser;
pub mod kconfig_if_node_parser;
pub mod source_line_parser;
pub mod kconfig_config_parser;
pub mod kconfig_config_node_parser;
pub mod kconfig_type_property_parser;
pub mod kconfig_reverse_dependency_parser;
pub mod kconfig_menu_config_node_parser;
use crate::parser::kconfig_parser::KconfigParser;
use crate::parser::kconfig_parser_impl::parser_traits::{Parseable, ParsingContext};
use crate::parser::kconfig_parser_state::Parsing;
use crate::parser::utils::collapse_manual_line_breaks::collapse_manual_line_breaks;
use crate::parser::utils::parse_span::ParseSpan;
use crate::structure::kconfig::Kconfig;
use crate::structure::kconfig_node_children::KconfigNodeChildren;
impl KconfigParser<Parsing> {
pub fn parse(&mut self) {
let collapsed_lines = collapse_manual_line_breaks(self.top_kconfig_source.lines().collect());
let lines = collapsed_lines.iter().map(|el| el.as_ref()).collect::<Vec<&str>>();
let span = ParseSpan::from_source(
&lines[..],
&self.top_kconfig_path,
);
let top_context = ParsingContext {
config: &self.config,
span: &span,
};
self.result = Some(KconfigNodeChildren::parse(
&top_context,
).map(|children| Kconfig {
children,
}));
}
}