vrsh 0.1.0

A simple shell written for my own learning.
use crate::shell::common::types::{ReplacementsCmd, ReplacementPart};

grammar;

match {
    r#"("[^"]*")|('[^']*')"# => STRING,
    r#"\$[^$\s"]"# => READ_VARIABLE,
    r#"[^"'$]*"# => WORD,
}

pub ReplacementCmd: ReplacementsCmd = {
    ReplacementPart+ => ReplacementsCmd {
        parts: <>,
    }
}

ReplacementPart: ReplacementPart = {
    STRING => ReplacementPart::String(String::from(<>)),
    READ_VARIABLE => ReplacementPart::Variable(String::from(<>.strip_prefix("$").unwrap())),
    WORD => ReplacementPart::Word(String::from(<>)),
}