diff options
author | Jesse Luehrs <doy@tozt.net> | 2022-03-07 22:58:22 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2022-03-07 22:58:22 -0500 |
commit | c271a9e62251f76e9798894346adcbfd3aa6dc8a (patch) | |
tree | 30a91882b372c05c2c3224d9e852e1b74d1cfc37 | |
parent | 3c478958c77eb00367513b21200d432333a887aa (diff) | |
download | nbsh-c271a9e62251f76e9798894346adcbfd3aa6dc8a.tar.gz nbsh-c271a9e62251f76e9798894346adcbfd3aa6dc8a.zip |
allow empty strings
-rw-r--r-- | src/parse/test_ast.rs | 3 | ||||
-rw-r--r-- | src/shell.pest | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/parse/test_ast.rs b/src/parse/test_ast.rs index 4ac75ec..fb3a4e3 100644 --- a/src/parse/test_ast.rs +++ b/src/parse/test_ast.rs @@ -233,6 +233,9 @@ fn test_basic() { ) )) ); + + parse_eq!("foo ''", cs!(p!((0, 6), e!(w!("foo"), w!())))); + parse_eq!("foo \"\"", cs!(p!((0, 6), e!(w!("foo"), w!())))); } #[test] diff --git a/src/shell.pest b/src/shell.pest index 0c63802..92b173a 100644 --- a/src/shell.pest +++ b/src/shell.pest @@ -23,8 +23,8 @@ alternation_bareword = @{ alternation_bareword_char+ } alternation_word_part = ${ var | alternation_bareword | - "'" ~ single_string ~ "'" | - "\"" ~ (var | double_string)+ ~ "\"" + "'" ~ single_string? ~ "'" | + "\"" ~ (var | double_string)* ~ "\"" } alternation_word = ${ alternation_word_part* } alternation = ${ "{" ~ alternation_word ~ ("," ~ alternation_word)* ~ "}" } @@ -36,8 +36,8 @@ word_part = ${ substitution | var | bareword | - "'" ~ single_string ~ "'" | - "\"" ~ (substitution | var | double_string)+ ~ "\"" + "'" ~ single_string? ~ "'" | + "\"" ~ (substitution | var | double_string)* ~ "\"" } word = ${ word_part+ } |