Guest User

Untitled

a guest
May 27th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. diff --git a/lib/ext/melbourne/grammar.y b/lib/ext/melbourne/grammar.y
  2. index 0536bda..43c9570 100644
  3. --- a/lib/ext/melbourne/grammar.y
  4. +++ b/lib/ext/melbourne/grammar.y
  5. @@ -368,6 +368,7 @@ static NODE *extract_block_vars(rb_parse_state *parse_state, NODE* node, var_tab
  6. %type <id> cname fname op f_rest_arg
  7. %type <num> f_norm_arg f_arg
  8. %token tUPLUS /* unary+ */
  9. +%token tINCR /* ++var */
  10. %token tUMINUS /* unary- */
  11. %token tUBS /* unary\ */
  12. %token tPOW /* ** */
  13. @@ -1042,6 +1043,7 @@ op : '|' { $$ = '|'; }
  14. | tPOW { $$ = tPOW; }
  15. | '~' { $$ = '~'; }
  16. | tUPLUS { $$ = tUPLUS; }
  17. + | tINCR { $$ = tINCR; }
  18. | tUMINUS { $$ = tUMINUS; }
  19. | tAREF { $$ = tAREF; }
  20. | tASET { $$ = tASET; }
  21. @@ -2386,6 +2388,11 @@ var_ref : variable
  22. {
  23. $$ = gettable($1);
  24. }
  25. + | tINCR variable
  26. + {
  27. + $$ = assignable($2, 0, vps);
  28. + $$->nd_value = NEW_CALL(gettable($$->nd_vid), rb_parser_sym("succ"), 0);
  29. + }
  30. ;
  31.  
  32. var_lhs : variable
  33. @@ -3959,6 +3966,9 @@ yylex(void *yylval_v, void *vstate)
  34.  
  35. case '+':
  36. c = nextc();
  37. + if (c == '+') {
  38. + return tINCR;
  39. + }
  40. if (parse_state->lex_state == EXPR_FNAME || parse_state->lex_state == EXPR_DOT) {
  41. parse_state->lex_state = EXPR_ARG;
  42. if (c == '@') {
  43. @@ -5023,6 +5033,7 @@ static const struct {
  44. {'%', "%"},
  45. {tPOW, "**"},
  46. {tUPLUS, "+@"},
  47. + {tINCR, "++@"},
  48. {tUMINUS, "-@"},
  49. {tUPLUS, "+(unary)"},
  50. {tUMINUS, "-(unary)"},
  51. @@ -5411,6 +5422,7 @@ void_expr0(NODE *node, rb_parse_state *parse_state)
  52. case '%':
  53. case tPOW:
  54. case tUPLUS:
  55. + case tINCR:
  56. case tUMINUS:
  57. case '|':
  58. case '^':
Add Comment
Please, Sign In to add comment