From: akr@... Date: 2014-10-24T15:08:22+00:00 Subject: [ruby-dev:48701] [ruby-trunk - Bug #10405] syntax error inconsistency between ruby -c and ripper Issue #10405 has been updated by Akira Tanaka. nil だろうと思っていました。 たとえば、end だけだと nil になります。 ``` % ./ruby -v -rripper -e 'p Ripper.sexp("end")' ruby 2.2.0dev (2014-10-22 trunk 48083) [x86_64-linux] nil ``` ---------------------------------------- Bug #10405: syntax error inconsistency between ruby -c and ripper https://bugs.ruby-lang.org/issues/10405#change-49632 * Author: Akira Tanaka * 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] ``` これは変な気がするんですがどうでしょうか。 -- https://bugs.ruby-lang.org/