文脈自由文法
context-free grammars
Wikipediaの説明は形式的すぎてわかりづらい
生成規則 (production rules) からなる
ReturnStatement :
return ;
return Expression ;
「ReturnStatementという非終端記号はreturnと;の並び、もしくはreturnとExpressionと;の並びである」という意味
非終端記号は、非終端記号や終端記号の並びで定義されている
左にあるReturnStatementは非終端記号
右にあるExpressionも非終端記号
ECMAScript仕様書においてセリフ体イタリックで書かれている文字列は非終端記号
まだ展開できる(終わりではない)から非終端
右にあるreturn ;は終端記号
ECMAScript仕様書において等幅フォントで書かれている文字列はソースコードにそのままの形で書かれる
これ以上展開できないから終端
Expression は 3 とか new Error("foo") とかに展開できる
そのため、ReturnStatement から return 3; とか return new Error("foo"); というような return 文がいくらでも生成できる
だから生成規則と呼ばれる
これを逆に、return 5 + 6 のような文字列に対して生成規則を使ってマッチさせることが可能
パーサの実装がこの考え方