diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-05-19 16:15:11 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-05-19 16:15:11 +0900 |
| commit | 6f6c270bb13ff6e68f39e863f11706ba0bf28500 (patch) | |
| tree | d759a373c396c7fc41c13a4e35c6d98ac0a0e7d3 | |
| parent | aeca23166b8e822ba8c3126ac9b1b0e76914fab7 (diff) | |
| download | mruby-6f6c270bb13ff6e68f39e863f11706ba0bf28500.tar.gz mruby-6f6c270bb13ff6e68f39e863f11706ba0bf28500.zip | |
mirb should detect end of expression smarter
| -rw-r--r-- | src/parse.y | 5 | ||||
| -rw-r--r-- | tools/mirb/mirb.c | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/parse.y b/src/parse.y index 8acdf983a..2b2dd6851 100644 --- a/src/parse.y +++ b/src/parse.y @@ -4630,6 +4630,11 @@ mrb_parser_parse(parser_state *p) p->tree = p->begin_tree = 0; return; } + + p->cmd_start = TRUE; + p->in_def = p->in_single = FALSE; + p->nerr = p->nwarn = 0; + yyparse(p); tree = p->tree; if (!tree) { diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c index df7c29df6..f09417ed0 100644 --- a/tools/mirb/mirb.c +++ b/tools/mirb/mirb.c @@ -27,6 +27,7 @@ is_code_block_open(struct mrb_parser_state *parser) case EXPR_BEG: /* an expression was just started, */ /* we can't end it like this */ + if (parser->nerr == 0) return FALSE; code_block_open = TRUE; break; case EXPR_DOT: @@ -198,13 +199,13 @@ main(void) } else { if (code_block_open) { - strcat(ruby_code, "\n"); strcat(ruby_code, last_code_line); } else { memset(ruby_code, 0, sizeof(*ruby_code)); strcat(ruby_code, last_code_line); } + strcat(ruby_code, "\n"); /* parse code */ parser->s = ruby_code; |
