Implemented case statements

This commit is contained in:
2025-03-06 15:32:28 -05:00
parent d2554777f5
commit 3034f6c8d2
17 changed files with 1528 additions and 1138 deletions

View File

@@ -13,25 +13,32 @@ pub fn expand_argv(argv: Vec<Token>, shenv: &mut ShEnv) -> Vec<Token> {
for arg in argv {
log!(DEBUG, "{}",arg.as_raw(shenv));
log!(DEBUG, processed);
match arg.rule() {
TkRule::DQuote => {
let dquote_exp = expand_dquote(arg.clone(), shenv);
processed.push(dquote_exp);
}
TkRule::VarSub => {
let mut varsub_exp = expand_var(arg.clone(), shenv);
processed.append(&mut varsub_exp);
}
TkRule::TildeSub => {
let tilde_exp = expand_tilde(arg.clone(), shenv);
processed.push(tilde_exp);
}
_ => {
if arg.rule() != TkRule::Ident {
log!(WARN, "found this in expand_argv: {:?}", arg.rule());
}
processed.push(arg.clone())
let mut expanded = expand_token(arg, shenv);
processed.append(&mut expanded);
}
processed
}
pub fn expand_token(token: Token, shenv: &mut ShEnv) -> Vec<Token> {
let mut processed = vec![];
match token.rule() {
TkRule::DQuote => {
let dquote_exp = expand_dquote(token.clone(), shenv);
processed.push(dquote_exp);
}
TkRule::VarSub => {
let mut varsub_exp = expand_var(token.clone(), shenv);
processed.append(&mut varsub_exp);
}
TkRule::TildeSub => {
let tilde_exp = expand_tilde(token.clone(), shenv);
processed.push(tilde_exp);
}
_ => {
if token.rule() != TkRule::Ident {
log!(WARN, "found this in expand_token: {:?}", token.rule());
}
processed.push(token.clone())
}
}
processed