summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/parse.y
AgeCommit message (Collapse)Author
2020-04-27Change obsolete `%pure-parser` to `%define api.pure`.Yukihiro "Matz" Matsumoto
Recent `bison` warns for `%pure-parser`. We kept it since MacOS only provide ancient `bison`, but the warning is noisy and there's no hope that Apple will upgrade `bison`. MacOS users must install the newer version of `bison`, by typing `brew install bison` for example. Note that `brew` does not overwrite the `bison` execution path automatically, so you need to update your `.bash_profile` as instructed by `brew`.
2020-04-25Implemented argument forwarding by `...`Yukihiro "Matz" Matsumoto
2020-04-01Avoid unnecessary `nextc()` recursion.Yukihiro "Matz" Matsumoto
2020-01-19Add `mrbc_cleanup_local_variables()` with `mrbc_context`; ref #4931dearblue
Clean up defined local variables.
2020-01-08`p->locals` may be `NULL` when error occurs before the point.Yukihiro "Matz" Matsumoto
This is reported by oss-fuzz: Issue 19886: mruby:mruby_fuzzer: Potential-null-reference in setup_numparams
2020-01-01Allow `here-doc` in the middle of Hash expressions; fix #4815Yukihiro "Matz" Matsumoto
2019-12-27Prohibit assignment to numbered parameters.Yukihiro "Matz" Matsumoto
It is stricter than CRuby but confusing anyway.
2019-12-27Allow non numbered-parameter identifier like `_1` outside of blocks.Yukihiro "Matz" Matsumoto
But it causes warnings as CRuby does; fix #4892 fix #489
2019-12-27Numbered parameters: usually linked list uses `cdr` for links.Yukihiro "Matz" Matsumoto
2019-12-27Prohibit numbered parameters as method arguments; fix #4892Yukihiro "Matz" Matsumoto
As of CRuby2.7 it is only warned. `mruby` prohibits explicitly to implement the future Ruby3 behavior.
2019-12-23Handle CR LF newline natively in lexertake-cheeze
2019-12-21Numbered parameters should not be available in the lambda bodies.Yukihiro "Matz" Matsumoto
`mruby` does not warn like `CRuby` for cases like #4893. Fix #4890, fix #4891, fix #4893.
2019-12-21`_0` is not numbered parameterKOBAYASHI Shuji
#### Before this patch: ```console $ bin/mruby rb -e '_0=:l; p ->{_0}.()' -e:1:13: _0 is not available -e:1:13: syntax error, unexpected $end, expecting '}' ``` #### After this patch (same as Ruby): ```console $ bin/mruby rb -e '_0=:l; p ->{_0}.()' :l ```
2019-12-21Fix SEGV from numbered parameters outside of blocks; fix #4862Yukihiro "Matz" Matsumoto
2019-12-09Warnings for numbered parameters in nested blocks.Yukihiro "Matz" Matsumoto
2019-12-09Parser refactoring on numbered parameters.Yukihiro "Matz" Matsumoto
Now identifiers like `_1abc` are allowed.
2019-12-09Support new numbered parameter syntax `_1` instead of `@1`.Yukihiro "Matz" Matsumoto
2019-12-09Implement numbered parametersUkrainskiy Sergey
2019-11-19Always enable the rational and complex literalsKOBAYASHI Shuji
I think they can always be enabled because the regular expression literal is always enabled.
2019-11-14Fix here document with EOFKOBAYASHI Shuji
#### Before this patch: ``` $ bin/mruby -e 'p <<EOS 1 EOS' -e:4:0: can't find heredoc delimiter "EOS" anywhere before EOF -e:4:0: syntax error, unexpected $end, expecting tHEREDOC_END or tHD_STRING_PART or tHD_STRING_MID ``` #### After this patch (same as Ruby): ``` $ bin/mruby -e 'p <<EOS 1 EOS' "1\n" ```
2019-11-13Use `mrb_intern_lit` if possible in `parse.y`KOBAYASHI Shuji
2019-11-12Use `intern` instead of `intern_cstr` if possible in `parse.y`KOBAYASHI Shuji
2019-11-08Fixed a bug in keyword arguments in block parameters; fix #4810Yukihiro "Matz" Matsumoto
This is caused by incomplete fix in #4746
2019-11-08Allow here-doc before closing parentheses; ref #4796Yukihiro "Matz" Matsumoto
2019-11-04Avoid using C++ style comments (`//`) in `parse.y` [ci skip]KOBAYASHI Shuji
2019-10-30Fix here-doc inside parens and brackets; fix #4796Yukihiro "Matz" Matsumoto
2019-10-04Refactor local variables addition in optional/keyword arguments.Yukihiro "Matz" Matsumoto
2019-10-03Add local variable reordering to `kwargs`; ref #4746Yukihiro "Matz" Matsumoto
2019-10-03Need to reorder local variables defined in `opt`; fix #4746Yukihiro "Matz" Matsumoto
For example, local variables in the following def: ```ruby def foo(a = (not_set = true), &block) ... end ``` should be `a, block, not_set`, but were `a, not_set, block`.
2019-10-03Refactor `append_gen` function.Yukihiro "Matz" Matsumoto
2019-10-02Merge pull request #4736 from dearblue/ast-strdumpYukihiro "Matz" Matsumoto
Escape the AST string
2019-10-01Support `NODE_LITERAL_DELIM` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e '%w[1 2]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_WORDS: 00001 NODE_STR "1" len 1 00001 node type: 85 (0x55) 00001 NODE_STR "2" len 1 (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e '%w[1 2]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_WORDS: 00001 NODE_STR "1" len 1 00001 NODE_LITERAL_DELIM 00001 NODE_STR "2" len 1 (snip) ```
2019-10-01Support `NODE_SYMBOLS` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e '%i[1]; %I[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 node type: 87 (0x57) 00001 node type: 87 (0x57) (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e '%i[1]; %I[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_SYMBOLS: 00001 NODE_STR "1" len 1 00001 NODE_SYMBOLS: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 2 base 10 00001 NODE_STR "" len 0 (snip) ```
2019-10-01Support `NODE_WORDS` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e '%w[1]; %W[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 node type: 86 (0x56) 00001 node type: 86 (0x56) (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e '%w[1]; %W[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_WORDS: 00001 NODE_STR "1" len 1 00001 NODE_WORDS: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 2 base 10 00001 NODE_STR "" len 0 (snip) ```
2019-09-30Support `NODE_DSYM` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e ':"#{1}"; ["#{2}": 0]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 node type: 83 (0x53) 00001 NODE_ARRAY: 00001 NODE_KW_HASH: 00001 key: 00001 node type: 83 (0x53) 00001 value: 00001 NODE_INT 0 base 10 (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e ':"#{1}"; ["#{2}": 0]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_DSYM: 00001 NODE_DSTR: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 1 base 10 00001 NODE_STR "" len 0 00001 NODE_ARRAY: 00001 NODE_KW_HASH: 00001 key: 00001 NODE_DSYM: 00001 NODE_DSTR: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 2 base 10 00001 NODE_STR "" len 0 00001 value: 00001 NODE_INT 0 base 10 (snip) ```
2019-09-29Print missing `:` before newline in `mrb_parser_dump`KOBAYASHI Shuji
2019-09-29Escape the AST stringdearblue
2019-09-28Replace `mrb_sym_name` with `mrb_sym_dump`; ref #4684Yukihiro "Matz" Matsumoto
2019-09-25Rename symbol-to-string functions; close #4684Yukihiro "Matz" Matsumoto
* mrb_sym2name -> mrb_sym_name * mrb_sym2name_len -> mrb_sym_name_len * mrb_sym2str -> mrb_sym_str
2019-09-15Merge pull request #4512 from lopopolo/patch-1Yukihiro "Matz" Matsumoto
Support parsing a Regexp literal with 'o' option
2019-09-14Revert "Update `%pure-parser` to `%define api.pure` for newer `bison`; fix ↵Yukihiro "Matz" Matsumoto
#4706" The `bison` on MacOS does not support `%define api.pure`. This reverts commit f7c9f1f796d83b9316917681ea068ff648248425.
2019-09-14Update `%pure-parser` to `%define api.pure` for newer `bison`; fix #4706Yukihiro "Matz" Matsumoto
2019-08-18Suppress warnings for `strncat()`dearblue
`strncat()` also needs `'\0'`.
2019-08-05Use new specifiers/modifiers of `mrb_vfromat()`KOBAYASHI Shuji
The binary sizes (gems are only `mruby-bin-mruby`) are reduced slightly in my environment than before the introduction of new specifiers/modifiers (5116789a) with this change. ------------+-------------------+-------------------+-------- BINARY | BEFORE (5116789a) | AFTER (This PR) | RATIO ------------+-------------------+-------------------+-------- mruby | 593416 bytes | 593208 bytes | -0.04% libmruby.a | 769048 bytes | 767264 bytes | -0.23% ------------+-------------------+-------------------+-------- BTW, I accidentally changed `tasks/toolchains/visualcpp.rake` at #4613, so I put it back.
2019-07-27Fix line number bug; fix #4513Yukihiro "Matz" Matsumoto
Also fix the misfeature introduced in 23783a4, that ignores newlines between method chains.
2019-07-17Revert #4300KOBAYASHI Shuji
Originally, it was not necessary to change. I made mistake.
2019-07-15Unify type of line number to `uint16_t`KOBAYASHI Shuji
2019-06-17Support parsing a Regexp literal with 'o' optionRyan Lopopolo
CRuby supports a 'o' `Regexp` option for `Regexp` literals, e.g. `/foo/o` that disables multiple interpolation passes. This commit adds support for parsing such literals. Nothing is done with the option, it is consumed and ignored by the parser.
2019-06-17Fixed indentation in parse.yYukihiro "Matz" Matsumoto
2019-06-17Allow newlines and comments between method calls.Yukihiro "Matz" Matsumoto