From: nobu@... Date: 2014-10-24T15:12:33+00:00 Subject: [ruby-dev:48702] [ruby-trunk - Bug #10405] syntax error inconsistency between ruby -c and ripper Issue #10405 has been updated by Nobuyoshi Nakada. それはendの後ろがないからですね。 何かあればそれの結果が返されます。 $ ruby -rripper -e 'p Ripper.sexp("end\n1")' [:program, [:@int, "1", [2, 0]]] ---------------------------------------- Bug #10405: syntax error inconsistency between ruby -c and ripper https://bugs.ruby-lang.org/issues/10405#change-49633 * 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/