class definitions
decoratorのproposalを読んでいて、classの定義順が気になった。
ClassTail???
雰囲気的には、下記の{以降を表しているっぽいが、
class Name {
const Name = class {
と思ったら1行下に書いてました。。。これは原文見た方がわかりやすそう。インデントがどっか行った
Syntax
ClassDeclaration[Yield, Default] :
class BindingIdentifier[?Yield] ClassTail[?Yield]
[+Default] class ClassTail[?Yield]
ClassExpression[Yield] :
class BindingIdentifier[?Yield]opt ClassTail[?Yield]
ClassTail[Yield] :
ClassHeritage[?Yield]opt { ClassBody[?Yield]opt }
ClassHeritage[Yield] :
extends LeftHandSideExpression[?Yield]
ClassBody[Yield] :
ClassElementList[?Yield]
ClassElementList[Yield] :
ClassElement[?Yield]
ClassElementList[?Yield] ClassElement[?Yield]
ClassElement[Yield] :
MethodDefinition[?Yield]
static MethodDefinition[?Yield]
;
NOTEA ClassBody is always strict code.
?YieldとYieldの違いはどこかに書いているのか?見た感じTsの?と同じだろう
class heritage??class遺産??こんな構文あったか?どれだ
書いてました上の方にextends構文ですね。なんで遺産?遺産を継承する?なんとなくわかるような
extends LeftHandSideExpression[?Yield]
ComputedPropertyContains
これちょいちょい出てくるよね?DeepLの翻訳でもいまいち意味が伝わってこない
productionsって生成みたいな意味なのね。
Static semantic rules that depend upon substructure generally do not look into class bodies except for PropertyName productions.
英語でforとかthatが一つだけなら読めるんだけど、for ... that ... withとかなると読めないな。。って思ってたけど、日本語でも〜の〜で〜ですみたいな事言われると解読に時間かかるし、一緒じゃね?って思えてきた。英語も慣れの問題だったのか。
やばい、本気出してきたw
流石にbodyは長いな
directed control transfers
何これ何これ
最後のこれが何を表しているのか不明
Runtime Semantics: PrepareForTailCall ( )
BitwiseXORExpression : BitwiseXORExpression ^ BitwiseANDExpression
XORあったっけ?
bitだと使えるのか
Statement Rulesとか、Statement Rulesとか全部決まってるの?
さっきのは飛ばして読んだからわからなかった
上でわからなかったやつ。
Runtime Semantics: PrepareForTailCall ( )
書きを読むと書いてある。
tail position call。多分その場で呼び出すやつだと思うんだけど
class 構文の評価順は自分が使ってきて、思っている感じと一致していた。
左から右、上から下。
使っている雰囲気ではわかってるんだけど、ちゃんと定義されているやつを読むと、これ以降で安心して使える。