diff --git a/geesh/lexer.scm b/geesh/lexer.scm index 087d832..117eaf6 100644 --- a/geesh/lexer.scm +++ b/geesh/lexer.scm @@ -296,7 +296,7 @@ leading '$')." (match (get-char port) (#\} (match `(,parameter ,operator ,word) ((p #f #f) `( ,p)) - ((p o #f) `(,o ,p)) + ((p o #f) `(,o ,p #f)) ((p o w) `(,o ,p ,w))))))))))) (define (get-parameter-expansion port) diff --git a/tests/lexer.scm b/tests/lexer.scm index aeccd85..e0e80cb 100644 --- a/tests/lexer.scm +++ b/tests/lexer.scm @@ -161,6 +161,10 @@ ("#" . ) ("##" . ))) +(test-equal "Recognizes a parameter expansion operator without default" + '((WORD (0 . 7) ( "foo" #f))) + (tokenize "${foo-}")) + (test-equal "Splits multidigit parameter name without braces" '((WORD (0 . 3) (( "1") "2"))) (tokenize "$12"))