aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
Commit message (Collapse)AuthorAgeFilesLines
* parse.y (parser_append_options): shorter alias LOCnobu2018-01-281-11/+14
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: fix yytokentype function declarationsnobu2018-01-231-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: added implicit parser_params argumentnobu2018-01-231-65/+65
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: added new_strterm wrappernobu2018-01-231-6/+11
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: concat dedented heredocnobu2018-01-231-3/+23
| | | | | | * parse.y (heredoc_dedent): concat literal strings after dedented. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: removed implicit parser_params macrosnobu2018-01-231-414/+396
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: expand tokp macronobu2018-01-211-33/+31
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: add EXPR_NONEnobu2018-01-211-1/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: fix state after left bracenobu2018-01-211-1/+1
| | | | | | | | * parse.y (parser_yylex): as well as `tLBRACE_ARG` (expr block), `tLBRACE` (primary block) also does not accept a label. only hash brace accepts a label. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: revert trace message to lex_statenobu2018-01-211-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: use enum yytokentypenobu2018-01-211-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: parser_token_value_print for yydebugnobu2018-01-211-0/+45
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61997 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove unneeded macro nd_set_linemame2018-01-201-3/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove double meaning of new_qcall/new_command_qcallmame2018-01-201-26/+43
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: rewrite excessed_comma processmame2018-01-201-8/+4
| | | | | | | | | | | | | | | | | Currently, parser.y includes core parser and Ripper parser obscurity. In addition, *some* Ripper code uses the result of the core parser, which make it difficult to separate the two parsers. I want to simplify this, not by separating the two parsers, but by making *all* Ripper actions follows the core parser actions. In other words, all the core parser actions run always even in Ripper, and after that, Ripper-specific actions run. For tha sake, in principle, I want to put `/*% ripper: ... %*/` in the end of actions. Anyway, it is too dirty to put it within expressions, IMO. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove macros that are no longer usedmame2018-01-201-7/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61989 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove double meaning of new_op_assign, etc.mame2018-01-201-20/+31
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove double meaning of new_xstring/new_string1mame2018-01-201-11/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: remove double meaning of new_brace_body/new_do_bodymame2018-01-201-10/+10
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: remove double meaning of const_path_field/top_const_fieldmame2018-01-201-16/+26
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove unneeded var_field_1 trickmame2018-01-201-10/+10
| | | | | | | | | | | | | | | | | 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
* parse.y: dot_or_colon as idnobu2018-01-201-13/+8
| | | | | | | | * 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
* parse.y: moved excessed_commanobu2018-01-201-2/+10
| | | | | | | | * 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
* dsl.rb: pnobu2018-01-201-17/+17
| | | | | | | * 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
* dsl.rb: ID constantsnobu2018-01-201-2/+2
| | | | | | | * 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
* dsl.rb: const_missingnobu2018-01-201-15/+15
| | | | | | | * 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
* parse.y (yycompile0): check if acceptednobu2018-01-201-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (assignable): Remove macro hellmame2018-01-191-62/+60
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Split the path of assignable to Ripper/Parsermame2018-01-191-48/+52
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove double meaning of node_assignmame2018-01-191-1/+9
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove double meaning of backref_assign_errormame2018-01-191-10/+20
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Remove unneeded type decls for Rippermame2018-01-191-12/+1
| | | | | | I think that they are not used. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: swap `foo!` and `foo` in Ripper DSLmame2018-01-191-210/+210
| | | | | | | | `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
* parse.y: assign to $$nobu2018-01-191-0/+1
| | | | | | | * 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
* parse.y: fix up r61957, toomame2018-01-191-8/+8
| | | | | | My apologies! git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: fix up r61957nobu2018-01-191-6/+6
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Allows Ripper DSL to embed C function calls as `foo!`mame2018-01-191-38/+38
| | | | | | | 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
* parse.y: Remove new_commandmame2018-01-191-6/+6
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/ripper: Introduce a simple DSL for ripper.y code generationmame2018-01-191-737/+439
| | | | | | | | | | | | | | | | | | | 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
* parse.y: Fix excessed_comma eventmame2018-01-191-1/+1
| | | | | | 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
* rb_parser_lex_state_names marked as staticshyouhei2018-01-181-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: no longer undef assignablenobu2018-01-181-1/+0
| | | | | | * 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
* parse.y: fix overflownobu2018-01-181-2/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: REQUIRED_KEYWORDnobu2018-01-181-3/+4
| | | | | | | * 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
* parse.y: refine negate_lit_gen error messagenobu2018-01-171-12/+15
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Refactor for-statement generationmame2018-01-161-18/+14
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (new_args_tail): Use human-friendly variable namesmame2018-01-161-22/+22
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: unified local_push argumentnobu2018-01-161-5/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: simplified compstmtnobu2018-01-161-17/+11
| | | | | | | * 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
* node.c: Stop double meaning of NODE_FOR by introducing NODE_FOR_MASGNmame2018-01-161-2/+2
| | | | | | | | | 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