Commit graph

1392 commits

Author SHA1 Message Date
naruse
c022a09773 Cast as VALUE to suppress type warnings
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-20 10:59:10 +00:00
naruse
1220638f5b They are enum yytokentype, need cast
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-20 10:59:09 +00:00
nobu
f28de8c06a parse.y: new_qcall
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-20 05:35:57 +00:00
nobu
35ac7cc09f parse.y: ID2VAL
* parse.y (ID2VAL): split from TOKEN2VAL.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-20 05:35:56 +00:00
nobu
425d52df7e parse.y: ripper_intern is no longer used
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-12 08:43:43 +00:00
nobu
2c51dc5053 parse.y: logop
* defs/id.def (predefined): add keywords `and` and `or`.

* parse.y (log_op): unify parser and ripper, and use tokens
  instead of node types and symbols.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-12 08:33:33 +00:00
nobu
737d6f3680 parse.y: call_bin_op
* parse.y (call_bin_op): unify parser and ripper, and use IDs
  instead of tokens.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-12 04:23:16 +00:00
nobu
a062d030eb parse.y: call_uni_op
* defs/id.def (predefined): add keyword `not`.

* parse.y (call_uni_op): unify parser and ripper, and use IDs
  instead of tokens.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-12 04:20:35 +00:00
nobu
549a3b74c4 ripper: fix %-op on_operator_ambiguous
* parse.y (ambiguous_operator): separate token and string
  representation of operators, to fix %-operator argument.  in a
  warning message, needs to be escaped by '%' but the symbol
  should not be.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-12 03:15:34 +00:00
nobu
58e97c4e6d parse.y: TOKEN2ID
* parse.y (TOKEN2ID): add macro which maps static tokens to IDs.

* template/id.h.tmpl (TOKEN2*ID, DEFINE_*ID_FROM_TOKEN): separate
  into macros, token to ID mapping and enum definitions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-11 02:14:06 +00:00
nobu
715094c2de parse.y: fix idCOLON2
* defs/id.def: remove idDSTAR and idCOLON3.

* parse.y (tCOLON2): make same as id.h.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-09 07:53:52 +00:00
nobu
b4ac19f743 parse.y: named caputre into match_op_gen
* parse.y (match_op_gen): move making named capture assignment
  nodes.  remove repeated conditions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-08 07:06:37 +00:00
nobu
7bf450d0c3 parse.y (parser_yylex): remove wrong warning
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-24 07:52:41 +00:00
nobu
0ec889d7ed parse.y: rescue/else/ensure in do-end
* parse.y (do_body): allow rescue/else/ensure inside do/end
  blocks.  [Feature #12906]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-19 09:54:58 +00:00
nobu
af9a151f0b parse.y: chomp by -l
* parse.y (rb_parser_while_loop): should chomp but not chop by -l
  option.  [ruby-core:78099] [Bug #12926]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-19 07:18:23 +00:00
nobu
6dccc53368 parse.y: warn space
* parse.y (parser_yylex): warn parentheses after space.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-19 01:38:59 +00:00
nobu
b4aa884f06 parse.y: preserve cmdarg stack
* parse.y (do_body): preserve cmdarg stack around do/end block.
  [ruby-core:78837] [Bug #13073]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-26 13:31:03 +00:00
nobu
9c89812664 fix r57089
* parse.y (parser_heredoc_identifier): fix multiline here document
  identifier condition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-16 22:57:01 +00:00
nobu
d25faa4ed2 multiline heredoc identifier
* parse.y (parser_heredoc_identifier): reject multiline here
  document identifier, which never matches single line.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-16 01:27:47 +00:00
nobu
2d6538a7c8 parse.y: newline in heredoc identifier
* parse.y (parser_heredoc_identifier): warn newline in here
  document identifier.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-15 12:58:59 +00:00
nobu
b53456731e parse.y: one warning, one line [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-15 06:22:09 +00:00
nobu
07e7981d42 parse.y: curtail scanning
* parse.y (parser_yyerror): curtail scanning range, not to exceed
  the max margin.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-14 07:30:41 +00:00
nobu
bc44acb5a3 parse.y: fix yyerror message
* parse.y (parser_yyerror): show the error line even if the error
  is at the end.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-14 04:35:28 +00:00
nobu
7e8b910a56 parse.y: zero codepoints
* parse.y (parser_tokadd_utf8): relax restriction to allow zero or
  more codepoints.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-11 09:20:27 +00:00
nobu
510f0ec869 parse.y: ripper generic input
* parse.y (ripper_initialize): allow generic input as source, if
  it has #gets method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-08 00:45:13 +00:00
nobu
8130ee5c9d parse.y: simplify parsing utf-8 string
* parse.y (parser_tokadd_codepoint): move error checks and add
  char.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-02 03:33:54 +00:00
nobu
80045bc2a9 parse.y: relax spaces
* parse.y (parser_tokadd_utf8): relax restriction spaces inside
  "\u{...}".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-02 02:47:11 +00:00
nobu
74495cfa11 parse.y: reject invalid codepoint
* parse.y (parser_tokadd_codepoint): reject invalid codepoint,
  surrogate blocks and surrogate pair, as well as mruby.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-01 08:26:39 +00:00
nobu
88b745f0ca parse.y: refine error message
* parse.y (parser_tokadd_utf8): refine error message at bad char
  in unicode escape, "invalid" instead of "unterminated".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 14:43:43 +00:00
nobu
5e4b845522 parse.y: parser_tokadd_codepoint
* parse.y (parser_tokadd_codepoint): extract from
  parser_tokadd_utf8.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 13:09:51 +00:00
nobu
94715bc666 parse.y: brace constants
* parse.y (parser_tokadd_utf8): make open/close braces constant.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 13:09:50 +00:00
nobu
22c0994bc8 parse.y: no warning for lambda
* parse.y (parser_yylex): do not warn parentheses of lambda
  argument list, because there is no name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 01:40:11 +00:00
nobu
65e27c8b13 parse.y: ambiguous parentheses
* parse.y (parser_yylex): warn ambiguous parentheses after a space
  in method definitions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-29 10:47:43 +00:00
nobu
4992c02095 parse.y: warn ? followed by a word
* parse.y (parse_qmark): warn `?` with unbalanced space, which is
  interpreted as a conditional operator.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-22 23:32:44 +00:00
nobu
3c93545a16 Revert r56856
* parse.y: tCHAR can be concatenated.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 22:45:26 +00:00
nobu
41d9e6dd54 parse.y: tCHAR cannot be concatenated
* parse.y (strings): tCHAR is not a subject of string literal
  concatenation and string interpolation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 03:13:59 +00:00
nobu
04a4fd8957 parse.y: new_attr_op_assign in ripper needs symbol
* parse.y (command_asgn, arg): new_attr_op_assign in ripper
  expects a Symbol VALUE as the operator, not an ID, so convert
  literal IDs to Symbols.  [ruby-core:78069] [Bug #12916]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-10 07:47:44 +00:00
nobu
8a5512b4bf parse.y: fix restored cmdarg_stack
* parse.y (brace_body, do_body): since cmdarg_stack is saved in
  VALUE val, should restore from the same member.  on big-endian
  platforms where VALUE is larger than int, it restored 0 in the
  upper word.  [ruby-core:77920] [Bug #12900]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-05 05:17:22 +00:00
nobu
e981862fc9 parse.y: !-operator warning
* parse.y (cond0): !-operator is a method call, no warning for
  literal in condition.  [ruby-core:77801] [Bug #12881]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-29 10:59:39 +00:00
nobu
2adba2dc5e parse.y: append to buffer
* parse.y (reg_compile_gen): always append error message to the
  error buffer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-22 14:33:58 +00:00
nobu
1b94420174 compile.c: literal range
* compile.c (iseq_compile_each): move numeric literal range
  optimization from fixup_nodes() in parse.y.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-01 13:17:51 +00:00
nobu
46bbb62bed parse.y: deferred_dots_gen
* parse.y (deferred_dots_gen): extract for tDOT2 and tDOT3.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-29 11:33:03 +00:00
nobu
3d2e45d319 parse.y: fix up r56198
* parse.y (symbol, dsym, parser_set_number_literal): set state to
  ENDARG, so that `do` after a literal should be `do_block` and
  bound to the outer method.  [ruby-core:72482] [Bug #11873]
* parse.y (parse_ident): revert r56198.
* parse.y (warn_balanced): the state of symbol and numeric
  literals is now EXPR_ENDARG, do not exclude it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-27 14:22:33 +00:00
nobu
f4ac0d75d9 parse.y: preserve cmdarg_stack
* parse.y (brace_body, do_body): preserve cmdarg_stack so that
  `do` after cmdarg in a block should be `do_block` and bound to
  the outer method.  [ruby-core:72482] [Bug #11873]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:47:35 +00:00
nobu
c924e2db96 parse.y: do after cmdarg in paren
* parse.y: `do` after cmdarg in parentheses should be `do_block`
  and bound to the outer method.  [ruby-core:72482] [Bug #11873]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:38:46 +00:00
nobu
b458aef0f0 parse.y: remove spaces [ci skip]
* parse.y (cmd_brace_block, do_block): remove spaces before tab in
  indent.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:36:32 +00:00
nobu
7b4b01bf05 parse.y: block bodies
* parse.y (brace_body, do_body): extract block bodies.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:32:03 +00:00
nobu
0783f55cf8 parse.y: heredoc token
* parse.y (parser_heredoc_identifier): gather branches by quote
  char.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-26 23:26:03 +00:00
nobu
70da28c185 parse.y: STR_TERM_END
* parse.y (parser_parse_string): store the end of string literal
  mark in nd_term instead of nd_func.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-26 15:11:32 +00:00
nobu
49b884941a parse.y: parser_string_term
* parse.y (parser_string_term): return the token of string or
  regexp literal terminator.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-26 15:07:51 +00:00