Commit graph

1920 commits

Author SHA1 Message Date
mame
9e95513781 parse.y: Remove unneeded var_field_1 trick
I thought this trick was needed because the result of var_field was
passed to different arguments, as follows:

```
$1 = var_field(p, $1);
$$ = backref_assign_error(p, $1, $1, &@$);
```

Currently the DSL supports that one result is passed to one argument.

However, after the refactoring, I found that `backref_assign_error`
uses only one `$1`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 06:11:21 +00:00
nobu
a8a4bdb72e parse.y: dot_or_colon as id
* parse.y (dot_or_colon): made type of `dot_or_colon` and EXPR_DOT
  tokens to <id> and set those IDs at tokenization.  type cast at
  primary in ripper is no longer needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 05:58:06 +00:00
nobu
7efe4e0881 parse.y: moved excessed_comma
* parse.y (block_param): embed excessed_comma event result in
  place of rest argument, instead of dispatching with the whole
  parameters.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 05:47:59 +00:00
nobu
0b8594209d dsl.rb: p
* ext/ripper/tools/dsl.rb (DSL#initialize): define `p` for `struct
  parser_params *p`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 05:39:03 +00:00
nobu
b5be3e7893 dsl.rb: ID constants
* ext/ripper/tools/dsl.rb (DSL#method_missing): expand ID
  constnats without parentheses.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61975 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 05:39:02 +00:00
nobu
b54f2addaa dsl.rb: const_missing
* ext/ripper/tools/dsl.rb (DSL.const_missing): define to expand
  Qnil and Qundef as-is.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 05:39:01 +00:00
nobu
76b609c8c3 parse.y (yycompile0): check if accepted
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-20 01:24:15 +00:00
mame
c4380069b7 parse.y (assignable): Remove macro hell
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 17:29:27 +00:00
mame
a403faa1b7 parse.y: Split the path of assignable to Ripper/Parser
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 17:06:56 +00:00
mame
d0b094b062 parse.y: Remove double meaning of node_assign
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 16:28:23 +00:00
mame
193b158b23 parse.y: Remove double meaning of backref_assign_error
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 16:24:07 +00:00
mame
a64054cd34 parse.y: Remove unneeded type decls for Ripper
I think that they are not used.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 15:43:42 +00:00
mame
c141a0f7e7 parse.y: swap foo! and foo in Ripper DSL
`foo!(...)` means Ripper event, and `foo(...)` means C function/macro
call.  This is for fail-safe; if I forget `!` accidentally, it would
fail to compile, instead of wrongly adding a new Ripper event.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 15:22:36 +00:00
nobu
f1b696480a parse.y: assign to $$
* parse.y (command): assign to $$.  should not rely upon
  undocumented behavior.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 13:41:44 +00:00
mame
e82059ce6e parse.y: fix up r61957, too
My apologies!

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 13:36:03 +00:00
nobu
70321a23d2 parse.y: fix up r61957
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 13:25:49 +00:00
mame
bf7621d81d parse.y: Allows Ripper DSL to embed C function calls as foo!
Instead of `_foo`.  This makes it useful to do word boundary search of
the editor.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 13:11:11 +00:00
mame
f8dd91e6f3 parse.y: Remove new_command
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 11:10:39 +00:00
mame
9b7fe0a250 ext/ripper: Introduce a simple DSL for ripper.y code generation
Currently, parse.y actions are hard to read and write because the code
has double meaning (for core parser and for ripper).  I think that, if
it is easy to write ripper's code shortly and simply, the double meaning
trick is not needed.

For the sake, this change adds a simple DSL for ripper's code.  For
example, in parse.y, we can write:

    /*% ripper: stmts_add(stmts_new, void_stmt) %*/

instead of:

    $$ = dispatch2(stmts_add, dispatch0(stmts_new),
                   dispatch0(void_stmt));

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 10:48:08 +00:00
mame
9eb4344a16 parse.y: Fix excessed_comma event
I believe that the assignment to `$$` was just forgotten.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 10:26:12 +00:00
shyouhei
8fca7e003a rb_parser_lex_state_names marked as static
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-18 09:44:51 +00:00
nobu
b2feea2945 parse.y: no longer undef assignable
* parse.y (assignable): no longer needs to undef since r61899.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-18 03:37:08 +00:00
nobu
e6883ef688 parse.y: fix overflow
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-18 03:29:12 +00:00
nobu
257fbc2c51 parse.y: REQUIRED_KEYWORD
* parse.y (REQUIRED_KEYWORD): special argument for required
  keyword argument, for core and ripper.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-18 03:25:20 +00:00
nobu
edb8b498f9 parse.y: refine negate_lit_gen error message
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-17 06:05:37 +00:00
mame
f8a0c7d629 parse.y: Refactor for-statement generation
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 15:12:15 +00:00
mame
0160006b59 parse.y (new_args_tail): Use human-friendly variable names
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 15:12:11 +00:00
nobu
b343c53db0 parse.y: unified local_push argument
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 08:21:40 +00:00
nobu
1c0073fa64 parse.y: simplified compstmt
* parse.y (top_compstmt, compstmt): unified void_stmts with
  ripper.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 08:05:57 +00:00
mame
4b6f3bce25 node.c: Stop double meaning of NODE_FOR by introducing NODE_FOR_MASGN
NODE_FOR was used both for "for"-statement itself and for
multi-assignment of for-statement (for x, y, in...end).
This change separates the two purposes, NODE_FOR for the former, and
newly introduced NODE_FOR_MASGN for the latter.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 07:24:53 +00:00
mame
ce769284a1 parse.y (expr_value_do): factor out COND_PUSH->expr_value->do->COND_POP
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 05:27:20 +00:00
nobu
96dcd21510 parse.y: removed PARSER_ARG macro
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 03:16:17 +00:00
nobu
28e554a697 parse.y: expand tokadd_mbchar
* parse.y (tokadd_mbchar): renamed and expand callers with p.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 03:16:15 +00:00
mame
840d0dc180 parse.y: set location of nodes that lexer generates
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 02:27:58 +00:00
mame
6fe72f294d parse.y: set location of string/literals in the lexer instead of actions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 02:00:16 +00:00
mame
cf924a05e0 parse.y (new_regexp): Fix SEGV of /#{"\u3042"}#{'い'}/ in non UTF-8
Mixing other encoding string literals in one Regexp caused SEGV.
This bug was found by CoverityScan.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 01:43:25 +00:00
mame
fb1172bcf6 parse.y (symbol_append): Added to factor out %i[] and %I[]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-16 01:32:58 +00:00
mame
e947f26f42 parse.y: Removes unneeded Ripper/Parser guards
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 16:12:34 +00:00
mame
ef1b0f36c7 parse.y (new_command_qcall): Receives a block (optional)
There were four cases that uses new_command_qcall and then
method_add_block.  This change factors out the four rules.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 15:04:57 +00:00
mame
4d073d5377 parse.y: Removes unreachable warnings
tIDENTIFIER is now always a local id (except fname).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 08:54:25 +00:00
mame
6bdd198937 parse.y: Removes unneeded NULL checks
Nowadays, there are less rules whose return value is NULL.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 08:54:24 +00:00
mame
84cf66cc6e parse.y: Remove unneeded NULL check
There are many usages assuming that bodystmt always returns non-null.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 07:54:24 +00:00
mame
8ac73660bc parse.y (last_arg_append, rest_arg_append): factor out the code clones
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 07:39:47 +00:00
mame
7c088b9662 parse.y (new_ary_op_assign): Factor out the typical code clone
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 06:25:43 +00:00
mame
c2052b027c parse.y: Fix a bug of obj[42, &blk] ||= foo bar
Follow up of r28123 (!)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 06:25:42 +00:00
mame
53c6960ddf parse.y (begin_block): Factor out BEGIN {} process.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 06:25:41 +00:00
mame
52a5f76e8b parse.y: Remove unused code comment blocks
The code fragments were commented out in YARV merge era.
I believe that it will be never needed in near future.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 05:17:18 +00:00
mame
5c0748b627 parse.y (parser_heredoc_dedent): Removed
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 14:44:46 +00:00
nobu
07d356ee28 parse.y: yydebug
* parse.y (yydebug): define to disable a global variable and get
  rid of linker error when static linked ext.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61822 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 14:28:10 +00:00
mame
a9f2596336 parse.y: Remove unused a macro "FIXME"
I don't know what it was, but seems that it has been already fixed since
r12117.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 14:17:25 +00:00