-
Notifications
You must be signed in to change notification settings - Fork 201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
+ ruby28.y: add right hand assignment #682
Conversation
Here is an example usage: ruby-next/ruby-next#38 |
@iliabylich Here is a dual PR for the next grammar: https://github.com/ruby-next/parser/pull/4/files. (I switched to using a separate grammar file for Ruby Next, which is based on the current master's |
^ That's what I was talking about 😄 Could you rebase please? |
Done! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM overall
doc/AST_FORMAT.md
Outdated
(mrasgn (send (int 13) :divmod (int 5)) (mlhs (lvasgn :a) (lvasgn :b))) | ||
"13.divmod(5) => a,b" | ||
~~~~~~~~~~~~~~~~~~~ expression | ||
^^ operator}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
},
copy-paste artifact?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks so. Fixed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Thanks! |
This PR supports right hand assignment for Ruby 2.8.0-dev (Ruby 3.0). whitequark/parser#682 ## `mrasgn` vs `masgn` `mrasgn` has the same structure as `masgn` except that the child nodes are reversed. So this PR adds `mrasgn` to the same constant as `masgn`. ### `mrasign` ```console % ruby-parse -e '13.divmod(5) => a, b' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (mrasgn (send (int 13) :divmod (int 5)) (mlhs (lvasgn :a) (lvasgn :b))) ``` ### `masign` ```console % ruby-parse -e 'a, b = 13.divmod(5)' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (masgn (mlhs (lvasgn :a) (lvasgn :b)) (send (int 13) :divmod (int 5))) ``` ## `rasgn` `rasgn` has the same structure as `mrasgn` without `mlhs`. So PR adds `rasgn` to the same constant as `mrasgn`. ```console % ruby-parse -e '13.divmod(5) => a' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (rasgn (send (int 13) :divmod (int 5)) (lvasgn :a)) ```
This PR supports right hand assignment for Ruby 2.8.0-dev (Ruby 3.0). whitequark/parser#682 ## `mrasgn` vs `masgn` `mrasgn` has the same structure as `masgn` except that the child nodes are reversed. So this PR adds `mrasgn` to the same constant as `masgn`. ### `mrasign` ```console % ruby-parse -e '13.divmod(5) => a, b' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (mrasgn (send (int 13) :divmod (int 5)) (mlhs (lvasgn :a) (lvasgn :b))) ``` ### `masign` ```console % ruby-parse -e 'a, b = 13.divmod(5)' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (masgn (mlhs (lvasgn :a) (lvasgn :b)) (send (int 13) :divmod (int 5))) ``` ## `rasgn` `rasgn` has the same structure as `mrasgn` without `mlhs`. So this PR adds `rasgn` to the same constant as `mrasgn`. ```console % ruby-parse -e '13.divmod(5) => a' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (rasgn (send (int 13) :divmod (int 5)) (lvasgn :a)) ```
This PR supports right hand assignment for Ruby 2.8.0-dev (Ruby 3.0). whitequark/parser#682 ## `mrasgn` vs `masgn` `mrasgn` has the same structure as `masgn` except that the child nodes are reversed. So this PR adds `mrasgn` to the same constant as `masgn`. ### `mrasign` ```console % ruby-parse -e '13.divmod(5) => a, b' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (mrasgn (send (int 13) :divmod (int 5)) (mlhs (lvasgn :a) (lvasgn :b))) ``` ### `masign` ```console % ruby-parse -e 'a, b = 13.divmod(5)' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (masgn (mlhs (lvasgn :a) (lvasgn :b)) (send (int 13) :divmod (int 5))) ``` ## `rasgn` `rasgn` has the same structure as `mrasgn` without `mlhs`. So this PR adds `rasgn` to the same constant as `mrasgn`. ```console % ruby-parse -e '13.divmod(5) => a' warning: parser/current is loading parser/ruby28, which recognizes warning: 2.8.0-dev-compliant syntax, but you are running 2.8.0. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. (rasgn (send (int 13) :divmod (int 5)) (lvasgn :a)) ```
Closes #668.