[#17276] blocks and local variables — Takaaki Tateishi <ttate@...>

立石です.

127 messages 2002/06/02
[#17283] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/02

まつもと ゆきひろです

[#17294] Re: blocks and local variables — Takaaki Tateishi <ttate@...> 2002/06/03

At Mon, 3 Jun 2002 06:26:56 +0900,

[#17298] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/03

まつもと ゆきひろです

[#17332] Re: blocks and local variables — nobu.nakada@... 2002/06/06

なかだです。

[#17336] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/07

まつもと ゆきひろです

[#17337] Re: blocks and local variables — nobu.nakada@... 2002/06/07

なかだです。

[#17338] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/07

まつもと ゆきひろです

[#17339] Re: blocks and local variables — Tanaka Akira <akr@...17n.org> 2002/06/07

In article <1023423387.175193.27185.nullmailer@picachu.netlab.jp>,

[#17347] Re: blocks and local variables — Takaaki Tateishi <ttate@...> 2002/06/07

At Fri, 7 Jun 2002 13:23:37 +0900,

[#17352] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/07

まつもと ゆきひろです

[#17404] Re: blocks and local variables — "K.Kosako" <kosako@...> 2002/06/12

Yukihiro Matsumotoさんの

[#17411] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/12

まつもと ゆきひろです

[#17518] Re: blocks and local variables — "K.Kosako" <kosako@...> 2002/06/19

Yukihiro Matsumotoさんの

[#17521] Re: blocks and local variables — nobu.nakada@... 2002/06/19

なかだです。

[#17524] Re: blocks and local variables — "K.Kosako" <kosako@...> 2002/06/19

nobu.nakada@nifty.ne.jpさんの

[#17528] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/20

まつもと ゆきひろです

[#17459] Re: blocks and local variables — NISHIO Mizuho <gha@...> 2002/06/16

どうも西尾です。

[#17460] Re: blocks and local variables — nobu.nakada@... 2002/06/16

なかだです。

[#17462] Re: blocks and local variables — Takaaki Tateishi <ttate@...> 2002/06/16

At Sun, 16 Jun 2002 10:40:40 +0900,

[#17464] Re: blocks and local variables — nobu.nakada@... 2002/06/16

なかだです。

[#17367] Ruby bcc32 on Win32 版のコミットについて — 小西 弘将 <konishih@...6.so-net.ne.jp>

小西 弘将です。

17 messages 2002/06/10
[#17368] Re: Ruby bcc32 on Win32 版のコミットについて — matz@... (Yukihiro Matsumoto) 2002/06/10

まつもと ゆきひろです

[#17369] Re: Ruby bcc32 on Win32 版のコミットについて — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/06/11

 小西 弘将です。

[#17370] Re: Ruby bcc32 on Win32 版のコミットについて — "U.Nakamura" <usa@...> 2002/06/11

こんにちは、なかむら(う)です。

[#17421] broken string when unterminated "#{". — WATANABE Hirofumi <eban@...>

わたなべです。

43 messages 2002/06/13
[#17422] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/13

まつもと ゆきひろです

[#17423] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/13

In article <1023943870.232495.9282.nullmailer@picachu.netlab.jp>,

[#17425] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/13

まつもと ゆきひろです

[#17426] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/13

In article <1023945463.297286.10112.nullmailer@picachu.netlab.jp>,

[#17439] Re: broken string when unterminated "#{". — nobu.nakada@... 2002/06/13

なかだです。

[#17440] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/13

まつもと ゆきひろです

[#17442] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/14

In article <1023987024.717469.15784.nullmailer@picachu.netlab.jp>,

[#17530] Re: broken string when unterminated "#{". — nobu.nakada@... 2002/06/21

なかだです。

[#17532] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/21

まつもと ゆきひろです

[#17539] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/21

In article <1024642728.541545.22623.nullmailer@picachu.netlab.jp>,

[#17540] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/21

まつもと ゆきひろです

[#17541] Re: broken string when unterminated "#{". — nobu.nakada@... 2002/06/21

なかだです。

[#17430] return value from methods of Array's subclass — "Shin'ya Adzumi" <adzumi@...>

あづみです。

12 messages 2002/06/13

[#17446] ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — nobu.nakada@...

なかだです。

13 messages 2002/06/15
[#17454] Re: ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — matz@... (Yukihiro Matsumoto) 2002/06/15

まつもと ゆきひろです

[#17461] Re: ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — nobu.nakada@... 2002/06/16

なかだです。

[#17513] __END__ in literal — nobu.nakada@...

なかだです。

17 messages 2002/06/18
[#17516] Re: __END__ in literal — matz@... (Yukihiro Matsumoto) 2002/06/18

まつもと ゆきひろです

[ruby-dev:17446] ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261))

From: nobu.nakada@...
Date: 2002-06-15 07:06:34 UTC
List: ruby-dev #17446
なかだです。

話が長くなりそうなので、devに振ります。

At Fri, 14 Jun 2002 14:39:22 +0900 (JST),
akr@m17n.org wrote:
> % ruby -ve 'true || break ? 0 : 1'
> ruby 1.7.2 (2002-06-12) [i386-freebsd4.2]
> -e:1: syntax error
> true || break ? 0 : 1
>                 ^
> -e:1: warning: useless use of a literal in void context
> 
> というように true || break ? 0 : 1 が parse error になります。
> 
> 演算子の優先順位の点からいえば、?: よりも || のほうが優先されるため、
> これが不正である理由はないように思います。
> 
> これが syntax error になるのは仕様しょうか。

At Sat, 15 Jun 2002 03:40:00 +0900 (JST),
akr@m17n.org wrote:
> In article <20020614173449.202F913FA@helium.ruby-lang.org>,
>   nobu.nokada@softhome.net writes:
> 
> > これは、三項演算子ではなくてbreakの引数のリテラル`? 'と解釈され
> > ています。その後に0が連続しているのでsyntax errorになります。
> > void contextのwarningは最後の1に対するものです。
> 
> はい。問題はなぜ ? がリテラルになっちゃうかという話なわけです。
> 
> むろん、直接的には break の後が EXPR_MID なので中置演算子は認識されな
> いからです。
> 
> そもそも EXPR_MID とは何かというのがよくわかっていないんですが、たぶん、
> 中置演算子が意味のない文脈を表現しているのだと思います。break の場合に
> ついていえば、中置演算子の左辺が break だと、左辺の評価中に制御が外に
> 出てしまい、中置演算子の機能が動作しないからでしょう。
> 
> このような観点から見ると、問題は中置演算子の左辺自体ではなく、左辺の右
> 端のトークンだけに依存して EXPR_MID であることがが決定されるということ
> にあります。まぁ、これは通常は問題ないわけですが、挙げた例のように問題
> が出ることもあります。

左辺の右端だけで決定されているというよりも、右辺をどこで終了さ
せるかが問題なのでは。

> とすれば、「正しい」修正は右端のトークンだけではなく、左辺を検査するこ
> とです。しかし、これは非常に困難です。なぜかというとこの処理の時点では
> 左辺はまだ認識されていないためです。左辺が認識されるのはこの時点で読も
> うとしているトークンが先読みとしてパーザに渡された後なわけで、そのトー
> クンの読み方を制御するために左辺を調べようというのは因果律に反します。
> 
> # まぁ、不可能とはいいませんが。backtrack するとか。

Rubyの文法を人間が期待するように完全に解釈しようとすると、
backtrackしかないような気はします。

> というようにまじめにやると厄介な話なので、仕様ないしは既知のバグという
> あたりかなぁ、とか思っています。
> 
> もちろん、なにかトリックを見つけて近似するというのはありかも知れません
> が、それで嬉しい人はまずいないんじゃないですかね。

どちらかというと、?のリテラルで空白を禁止したほうが直観的なよう
な気がします。必要なら`?\ 'とできますし。

それと、こういうのも一見して分かりにくいと思うので、二文字以上
の単語の先頭の?はリテラルとみなさないほうが良いのでは。

  p ?aif true	#=> 97


ついでに、ソースと別ディレクトリでコンパイルしていると、
keywordsを変更しても$(srcdir)/lex.cが読み込まれてしまって、変更
が反映されません。


Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.184
diff -u -2 -p -r1.184 parse.y
--- parse.y	2002/06/14 06:27:18	1.184
+++ parse.y	2002/06/15 06:54:40
@@ -3032,5 +3032,5 @@ here_document(term, indent)
 }
 
-#include "lex.c"
+#include <lex.c>
 
 static void
@@ -3266,8 +3266,8 @@ yylex()
 	c = nextc();
 	if (c == -1) {
-	    rb_compile_error("incomplete character syntax");
-	    return 0;
+	    return '?';
 	}
-	if (IS_ARG() && ISSPACE(c)){
+	if ((lex_state != EXPR_BEG && ISSPACE(c)) || ismbchar(c) ||
+	    (ISALNUM(c) || c == '_') && (lex_p >= lex_pend || is_identchar(*lex_p))){
 	    pushback(c);
 	    lex_state = EXPR_BEG;


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next