I get this syntax error:
C:/rb-play/parser/try.rb:13: syntax error, unexpected ']', expecting
kEND
g.operation /[+-*/]/
if I change that line to:
g.operation /[+-]/
that line no longer has an error, so the / and * threw it off
then I get an error on another line:
g.string %r(["'](.*?[^\]|.*?)["'])
C:/rb-play/parser/try.rb:15: warning: character class has `[' without
escape
C:/rb-play/parser/try.rb:15: unmatched (: /["'](.*?[^\]|.*?)["']/
In the first, you need the - at the beginning of the (or escaped with
a backslash) or Ruby interprets it as a character range. You also need
to escape the first forward slash or Ruby interprets it as the end of
the Regex. So:
/[-+*\/]/
In the second, the backslash needs to be escaped. If it isn't, then it
is used to escape the following ] so the character class isn't closed
until the final ] which is just wrong. So:
%r(["'](.*?[^\\]|.*?)["'])
Consider both issues were due to missing backslashes, they were
probably originally correct. I guess somewhere along the way the
backslashes were interpreted as escape characters and didn't make it
to the final page.
Jeremy
···
On Nov 28, 2:59 pm, "wbsurf...@yahoo.com" <wbsurf...@gmail.com> wrote:
I get this syntax error:
C:/rb-play/parser/try.rb:13: syntax error, unexpected ']', expecting
kEND
g.operation /[+-*/]/
if I change that line to:
g.operation /[+-]/
that line no longer has an error, so the / and * threw it off
then I get an error on another line:
g.string %r(["'](.*?[^\]|.*?)["'])
C:/rb-play/parser/try.rb:15: warning: character class has `[' without
escape
C:/rb-play/parser/try.rb:15: unmatched (: /["'](.*?[^\]|.*?)["']/
> I get this syntax error:
> C:/rb-play/parser/try.rb:13: syntax error, unexpected ']', expecting
> kEND
> g.operation /[+-*/]/
> if I change that line to:
> g.operation /[+-]/
> that line no longer has an error, so the / and * threw it off
> then I get an error on another line:
> g.string %r(["'](.*?[^\]|.*?)["'])
> C:/rb-play/parser/try.rb:15: warning: character class has `[' without
> escape
> C:/rb-play/parser/try.rb:15: unmatched (: /["'](.*?[^\]|.*?)["']/
In the first, you need the - at the beginning of the (or escaped with
a backslash) or Ruby interprets it as a character range. You also need
to escape the first forward slash or Ruby interprets it as the end of
the Regex. So:
/[-+*\/]/
In the second, the backslash needs to be escaped. If it isn't, then it
is used to escape the following ] so the character class isn't closed
until the final ] which is just wrong. So:
%r(["'](.*?[^\\]|.*?)["'])
Consider both issues were due to missing backslashes, they were
probably originally correct. I guess somewhere along the way the
backslashes were interpreted as escape characters and didn't make it
to the final page.