summaryrefslogtreecommitdiffstats
path: root/parsing/parse.sh
diff options
context:
space:
mode:
Diffstat (limited to 'parsing/parse.sh')
-rw-r--r--parsing/parse.sh18
1 files changed, 13 insertions, 5 deletions
diff --git a/parsing/parse.sh b/parsing/parse.sh
index da9b2e5..d9fb6a1 100644
--- a/parsing/parse.sh
+++ b/parsing/parse.sh
@@ -600,14 +600,19 @@ parse_sub()
if ${complete} && ! accept T_EOF; then
synexp ''
fi
+ if ! ${complete}; then
+ case "${tok%${US}*}" in
+ T_RPAREN)
+ ;;
+ *)
+ synerr 'Missing ")"'
+ ;;
+ esac
+ fi
get_lineno
printf '%c' "${RS}"
- if accept T_RPAREN; then
- printf ')'
- else
- get_lexer_char
- fi
+ get_lexer_char
printf '%c' "${RS}"
get_tokens
@@ -675,4 +680,7 @@ try()
#try 'case foo in bar) baz;; (qux) quux;; quux);; esac'
#try 'foo bar ( baz )'
try 'foo $(bar)'
+try 'foo $(bar); baz'
+try 'foo $(bar)' 'baz'
+try 'foo $(bar) baz'
#try 'foo $((1 + 1))'