Issue #10405 has been updated by Nobuyoshi N…
それはendの後ろがないからですね。
何かあればそれの結果が返されます。
$ ruby -rripper -e 'p Ripper.sexp("end\n1")'
[:program, [:@int, "1", [2, 0]]]
Bug #10405: syntax error inconsistency between ruby -c and ripper
- Author: Akira T.
- Status: Feedback
- Priority: Normal
- Assignee:
- Category: ext
- Target version: current: 2.2.0
- ruby -v: ruby 2.2.0dev (2014-10-20 trunk 48052) [x86_64-linux]
- Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
以下のように、a / b c という内容のファイルを
ruby -c で検査すると syntax error になるのですが
Ripper.sexp に適用するとなにか構文木が返ってきます。
% cat z.rb
a / b c
% ./ruby -c z.rb
z.rb:1: syntax error, unexpected tIDENTIFIER, expecting keyword_do or
'{' or '('
zsh: exit 1 ./ruby -c z.rb
% ./ruby -rripper -e 'p Ripper.sexp(STDIN.read)' < z.rb
[:program, [:vcall, [:@ident, "c", [1, 6]]]]
% ./ruby -v
ruby 2.2.0dev (2014-10-20 trunk 48052) [x86_64-linux]
これは変な気がするんですがどうでしょうか。