use crate::shell::common::types::{InitialCmd, InitialCmdPart, InitialCmdOrComment};
grammar;
pub InitialCmdOrComment: InitialCmdOrComment = {
<cmd: InitialCmd> => InitialCmdOrComment::InitialCmd(cmd),
r#"#[^#\n\r]*[\n\r]*"# => InitialCmdOrComment::Comment,
}
InitialCmd: InitialCmd = {
<parts: InitialCmdPart+> => InitialCmd {
parts,
},
}
InitialCmdPart: InitialCmdPart = {
<str: r#"'[^']*'"#> => InitialCmdPart::SingleQuotedString(String::from(str)),
"$(" <cmd: InitialCmd> ")" => InitialCmdPart::Calculation(cmd),
<text: r#"[^$#']+"#> => InitialCmdPart::String(String::from(text)),
}