From: shyouhei@... Date: 2017-03-27T13:35:31+00:00 Subject: [ruby-core:80378] [Ruby trunk Bug#13371] Syntax Error with regex when parens are omitted Issue #13371 has been updated by shyouhei (Shyouhei Urabe). ndn (Nikola Nenkov) wrote: > As per the syntax highlighting in my text editor and a discussion with another person, it seems that the opening slash is interpreted as division. Yes. Your text editor parses the line correctly. If you want to put regular expression literals without parens, you can write `''.split %r/ ./` . Does that work for you? ---------------------------------------- Bug #13371: Syntax Error with regex when parens are omitted https://bugs.ruby-lang.org/issues/13371#change-63859 * Author: ndn (Nikola Nenkov) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.4.1 * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- When you skip the parens of method invocations and pass a regex, you can get a `SyntaxError` if the regex starts with a space. ~~~ ruby ''.split(/ ./) # => [] ''.split /./ # => [] ''.split / ./ # !> SyntaxError: unexpected '.' ~~~ As per the syntax highlighting in my text editor and a discussion with another person, it seems that the opening slash is interpreted as division: ~~~ ruby require 'ripper' Ripper.lex("''.split /./") # => # [[[1, 0], :on_tstring_beg, "'"], # [[1, 1], :on_tstring_end, "'"], # [[1, 2], :on_period, "."], # [[1, 3], :on_ident, "split"], # [[1, 8], :on_sp, " "], # [[1, 9], :on_regexp_beg, "/"], # # ^^^ # [[1, 10], :on_tstring_content, "."], # [[1, 11], :on_regexp_end, "/"]] Ripper.lex("''.split / ./") # => # [[[1, 0], :on_tstring_beg, "'"], # [[1, 1], :on_tstring_end, "'"], # [[1, 2], :on_period, "."], # [[1, 3], :on_ident, "split"], # [[1, 8], :on_sp, " "], # [[1, 9], :on_op, "/"], # # ^^^ # [[1, 10], :on_sp, " "], # [[1, 11], :on_period, "."], # [[1, 12], :on_op, "/"]] ~~~ Reproducible with older versions as well (tried it until 2.1.2) -- https://bugs.ruby-lang.org/ Unsubscribe: