vrsh 0.1.2

A simple shell written for my own learning.
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)),
}