diff options
Diffstat (limited to 'mrbgems/mruby-compiler/core/parse.y')
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 6e6dff533..cb1ad9427 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -3305,7 +3305,11 @@ string_fragment : tCHAR } | tSTRING_BEG string_rep tSTRING { - $$ = new_dstr(p, push($2, $3)); + node *n = $2; + if (nint($3->cdr->cdr) > 0) { + n = push(n, $3); + } + $$ = new_dstr(p, n); } ; @@ -3347,7 +3351,11 @@ xstring : tXSTRING_BEG tXSTRING } | tXSTRING_BEG string_rep tXSTRING { - $$ = new_dxstr(p, push($2, $3)); + node *n = $2; + if (nint($3->cdr->cdr) > 0) { + n = push(n, $3); + } + $$ = new_dxstr(p, n); } ; @@ -3410,7 +3418,11 @@ words : tWORDS_BEG tSTRING } | tWORDS_BEG string_rep tSTRING { - $$ = new_words(p, push($2, $3)); + node *n = $2; + if (nint($3->cdr->cdr) > 0) { + n = push(n, $3); + } + $$ = new_words(p, n); } ; @@ -3422,8 +3434,12 @@ symbol : basic_symbol } | tSYMBEG tSTRING_BEG string_rep tSTRING { + node *n = $3; p->lstate = EXPR_ENDARG; - $$ = new_dsym(p, new_dstr(p, push($3, $4))); + if (nint($4->cdr->cdr) > 0) { + n = push(n, $4); + } + $$ = new_dsym(p, new_dstr(p, n)); } ; |
