From: matz@... (Yukihiro Matsumoto) Date: 1997-08-22T18:02:53+09:00 Subject: [ruby-dev:222] Re: '@' in yylex() まつもと ゆきひろです In message "[ruby-dev:221] '@' in yylex()" on 97/08/22, Keiju ISHITSUKA writes: |けいじゅ@日本ラショナルです. |perse.y::yylex()の中で |今な感じで '@' が良く出てきているのですがどういう意味になっているので |すか?? | |単項演算子の定義は | |def +@ | ... | |って書けという意味なのかな? そうです.+や-のような二項演算子としても単項演算子としても働 くものはこうやって区別する必要があります.それにあわせて他の 単項演算子(!, ~)も @ をつけても良いようにしてあります. でも,バグを見つけてしまった.^^;;; --- parse.y~ Thu Aug 21 17:16:12 1997 +++ parse.y Fri Aug 22 17:52:44 1997 @@ -2053,4 +2053,11 @@ case '!': + c = nextc(); + if (lex_state == EXPR_FNAME) { + if (c == '@') { + lex_state = EXPR_BEG; + return '!'; + } + } lex_state = EXPR_BEG; - if ((c = nextc()) == '=') { + if (c == '=') { return NEQ; @@ -2419,3 +2426,3 @@ lex_state = EXPR_BEG; - return c; + return '~';