JavaScript の構文(BNF)とか

yield の構文ってどうなっているのさ!? とか hg.ecmascript.org の存在とか
1
小倉唯 @Constellation

yieldとか分割代入のBNFってどこにあるのかな?

2010-08-03 00:16:47
テラマコ @teramako

@Constellation 見当たらないので、自作しようと奮闘してますw yield はまぁReturnStatementを同じ形でいいのかなと思いますが、分割代入は難しい...

2010-08-03 00:18:50
テラマコ @teramako

あ、yield 時はExpressionが必須かな。ちょっと試してみよっと

2010-08-03 00:20:04
小倉唯 @Constellation

@teramako 恐ろしいことにw あっyield, sendできるので式だったかと. val = yield null;とか.

2010-08-03 00:23:58
テラマコ @teramako

@Constellation 手元のGecko 1.9.2.8だと SyntaxError: yield expression must be parenthesized ソース:function a(){ return yield, "a"; } になります。。。

2010-08-03 00:28:32
小倉唯 @Constellation

yieldの優先順位ぜんぜん知らない... Mozillaさんなんか書いてくれてないのかなー.

2010-08-03 00:29:24
小倉唯 @Constellation

@teramako ああっ! 普通のExpとしては解釈不能なんですね... yieldの複雑さ半端ないですね.

2010-08-03 00:31:51
Piro🎉"シス管系女子"シリーズ累計5万部突破!!🎉 @piro_or

yieldとかMozilla専用の記法がある時に復帰可能SyntaxErrorの判別が期待通りに行われなさそうだなと思ったので、UxUではとりあえず1回try-catchで実行してからエラったらijsに渡すようにしてみてたり。

2010-08-03 00:34:42
TOYAMA Nao @nanto_vi

http://nanto.asablo.jp/blog/2006/08/12/481381#js17-generator 「yield 式がほかの演算子のオペランドとして使われるときは yield 式全体を括弧で囲う必要がある」ってどこから得られた情報なんだろう?

2010-08-03 00:35:14
小倉唯 @Constellation

@piro_or ijsはv8 level解釈 + ECMA-262のgetter/setterにString他取れる修正 + IdentifierNameにkeyword取れる修正 の解釈ですー. JS1.8のparseもすごい気になります...

2010-08-03 00:44:53
小倉唯 @Constellation

@mal_blue BNFあるんですか! どうもです見てみます!!

2010-08-03 00:46:55
小倉唯 @Constellation

そして初めてhg.ecmascript.orgの存在を知った...

2010-08-03 00:47:24
小倉唯 @Constellation

そしてyieldの括弧の必要性がすでに言及されているのに気づいて, @nanto_vi さんすごいと思った.

2010-08-03 00:50:48
テラマコ @teramako

@Constellation うおお、ありがとうございます。 しかし、余計に分からなくなってきましたw

2010-08-03 01:09:59
小倉唯 @Constellation

@teramako 難しいですね... ConditionalExpのphaseにはさんだらだめなのかなーとか思ったのでちょっと書いてみます...

2010-08-03 01:14:40
小倉唯 @Constellation

ivjs.js(ijsじゃないほう)にこんな感じでpatchあてたらyield解釈できるかな? http://gist.github.com/504910 ES4のBNF参考にConditionalに追加した.

2010-08-03 01:38:05
小倉唯 @Constellation

いやー. ちょっとだめそう. commaが着たらむしろSyntaxError飛ばすのが正解かな?

2010-08-03 01:40:30
小倉唯 @Constellation

すっごい眠いけど, Expression Contextより上に上げればいいんじゃないかとか思ったので試す...

2010-08-03 02:09:34
小倉唯 @Constellation

あーだめだ. いちおうAssignmentExpなんだった. これは本気で細かなcheckをしないとだめか...

2010-08-03 02:11:40
小倉唯 @Constellation

眠い... 非常にあいまいなのか, RhinoとSpiderMonkeyで解釈違う... 10, yield 20; とかRhinoだと通らない.

2010-08-03 03:14:08
小倉唯 @Constellation

SMの解釈方式に従えばこんな感じかな? http://gist.github.com/504910 SMと違ってyield文でなくEXPに畳み込んで, そのためreturnと同一のmethodでいじる必要をなくしてる. これでそこそこ解釈できると思うけど...

2010-08-03 03:47:32