Commit graph

1806 commits

Author SHA1 Message Date
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
nobu
99e52bcd8e parse.y: ripper no longer uses rb_discard_node
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 14:14:51 +00:00
mame
269856a4a1 parse.y: Remove a code for old yacc
The current parse.y won't compile with yacc since it depends on many
bison's extensions.  Also, configure.ac does not have a check for yacc,
so the macro OLD_YACC is no longer used.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 14:09:41 +00:00
mame
15352965c2 parse.y: Remove almost all *_gen macros by passing parser_params explicitly
In parse.y many functions were suffixed "_gen" and had companion macros
to pass struct parser_params implicitly, which made parse.c bigger and
more obscure.

This change expands and removes almost all "*_gen" macros.  This
requires explicit passing of struct parser_params, i.e., we need to
write "foo(p, ..)" instead of "foo(..)".  However, it is just extra
three letters.  I believe that this is easier to understand.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 13:51:44 +00:00
mame
97b9899924 parse.y: Expand global-like accessor macros for struct parser_params
For example, `lex_strterm` is expanded to `p->lex.strterm`.
I believe that this expansion make the code straightforward.
They look not so annoying because "parser" was renamed to "p".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 13:51:41 +00:00
mame
14be478d88 parse.y: Use "p" for the variable of struct parser_params consistently
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 13:51:38 +00:00
mame
ca6e1620bd parse.y: Avoid "p" as a variable name
Because I want to use the name "p" for struct parser_params through
parse.c.  This change renames "p" to "ptr", "paren", etc. depending upon
the context.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 13:51:35 +00:00
mame
1b102b719d parse.y: Remove meaningless ifndef guards
Because the part of the code is already within `#ifndef RIPPER`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-12 15:59:26 +00:00
mame
21f03063f6 parse.y (token_info_push, token_info_pop): Refactoring
* remove unused argument len
* factor out initialization code of token_info
* make the condition of "mismatched indentations" warning easy to understand

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-12 14:25:31 +00:00
mame
ccf3a0d698 parse.y (token_info_push, token_info_pop): Use code_location
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-12 14:25:28 +00:00
mame
c4858f341c parse.y: Remove unneeded dependence on pointer representatin
A simple comparison is enough in this case

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-12 13:22:20 +00:00
mame
35b2038ee4 parse.y: Remove LEXPOP hack
cmdarg_stack became inconsistent state due to look-ahead, and LEXPOP
hack smoothed over the inconsistency.

This commit fixes the inconsisitent state itself, and removes LEXPOP
hack.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-11 15:54:13 +00:00
kazu
fda5e85e2b Fix a typo [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-11 13:56:05 +00:00
mame
69c8feb253 parse.y: disentangle the lexer handling of ')', ']', and '}'
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-11 13:42:18 +00:00
mame
f2bffa1686 parse.y: simplify and add a comment for paren_nest and lpar_beg
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61768 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-11 13:42:15 +00:00