#![allow(clippy::unwrap_used)]
#![allow(clippy::expect_used)]
#![allow(clippy::indexing_slicing)]
pub mod ast;
pub mod codegen; pub mod lexer;
pub mod parser;
pub mod parser_arith;
pub mod parser_cmd;
pub mod parser_control;
pub mod parser_decl;
pub mod parser_error_display;
pub mod parser_expr;
pub mod parser_pipeline;
pub mod semantic;
pub use ast::{BashAst, BashExpr, BashNode, BashStmt};
pub use parser::{BashParser, ParseError, ParseResult};
pub use semantic::{EffectTracker, ScopeInfo, SemanticAnalyzer};
#[cfg(test)]
mod tests;
#[cfg(test)]
mod property_tests;
#[cfg(test)]
mod instrumentation_tests;
#[cfg(test)]
mod codegen_tests;
#[cfg(test)]
pub mod generators;
#[cfg(test)]
#[path = "control_coverage_tests.rs"]
mod control_coverage_tests;
#[cfg(test)]
#[path = "expr_coverage_tests.rs"]
mod expr_coverage_tests;
#[cfg(test)]
#[path = "parser_coverage_tests.rs"]
mod parser_coverage_tests;
#[cfg(test)]
#[path = "parser_arith_tests.rs"]
mod parser_arith_tests;
#[cfg(test)]
#[path = "parser_decl_tests.rs"]
mod parser_decl_tests;
#[cfg(test)]
#[path = "parser_expr_tests.rs"]
mod parser_expr_tests;
#[cfg(test)]
#[path = "lexer_operator_tests.rs"]
mod lexer_operator_tests;
#[cfg(test)]
#[path = "parser_control_cov_tests.rs"]
mod parser_control_cov_tests;
#[cfg(test)]
#[path = "parser_main_tests.rs"]
mod parser_main_tests;
#[cfg(test)]
#[path = "parser_main_tests_p10.rs"]
mod parser_main_tests_p10;
#[cfg(test)]
#[path = "parser_main_tests_p2.rs"]
mod parser_main_tests_p2;
#[cfg(test)]
#[path = "parser_main_tests_p3.rs"]
mod parser_main_tests_p3;
#[cfg(test)]
#[path = "parser_main_tests_p4.rs"]
mod parser_main_tests_p4;
#[cfg(test)]
#[path = "parser_main_tests_p5.rs"]
mod parser_main_tests_p5;
#[cfg(test)]
#[path = "parser_main_tests_p6.rs"]
mod parser_main_tests_p6;
#[cfg(test)]
#[path = "parser_main_tests_p7.rs"]
mod parser_main_tests_p7;
#[cfg(test)]
#[path = "parser_main_tests_p8.rs"]
mod parser_main_tests_p8;
#[cfg(test)]
#[path = "parser_main_tests_p9.rs"]
mod parser_main_tests_p9;