まつもと ゆきひろです

In message "[ruby-dev:227] Re: '@' in yylex()"
    on 97/08/24, 石塚圭樹 <keiju / bc.mbn.or.jp> writes:

|けいじゅ@日本ラショナルです.

|そういう意味では, ruby って結構微妙な文法なんですよねえ...

微妙です.厳密にはBNFとかで書けません.lexerとの協調動作で実
現しています.

|$0a = 1
|
|は OK なんですが,
|
|$1a = 1
|
|は NG ですよね? $0a が許されるんだから, $1a も許されてもいいんじゃない
|でしょうかねえ?

そうかもしれませんねえ.直しておきましょうか.

--- parse.y~	Sat Aug 23 20:01:34 1997
+++ parse.y	Mon Aug 25 12:01:18 1997
@@ -2593,2 +2593,3 @@
 	  case '7': case '8': case '9':
+	    tokadd('$');
 	    while (isdigit(c)) {
@@ -2597,5 +2598,6 @@
 	    }
+	    if (is_identchar(c)) break;	/* normal variable like `$1a' */
 	    pushback(c);
 	    tokfix();
-	    yylval.node = NEW_NTH_REF(atoi(tok()));
+	    yylval.node = NEW_NTH_REF(atoi(tok()+1));
 	    return NTH_REF;