01 / PARSE
parseはsource全体を読む
parse(source)はsource全体を解析し、宣言・式を保持するMatraModuleを返します。単一root nodeを要求せず、構文エラー時に部分結果を成功値として返しません。構文木と評価済み文書valueは別の段階です。
const module = parse(source)
// module is syntax, not the evaluated document AST01 / PARSE
parse(source)はsource全体を解析し、宣言・式を保持するMatraModuleを返します。単一root nodeを要求せず、構文エラー時に部分結果を成功値として返しません。構文木と評価済み文書valueは別の段階です。
const module = parse(source)
// module is syntax, not the evaluated document AST02 / STATIC
literal、array、object、先行する静的let、およびそれらのみからなるnodeや静的arrayのchild展開は静的に取得できます。未解決reference、member、call、operator、制御式、代入など、実行が必要な式では静的取得エラーになります。暗黙に実行へ切り替わりません。
const value = evaluateStatic(module)03 / EVALUATE
動的な式の値が必要な場合はevaluate(module)を明示して使います。これによりparseが実行と混同されず、静的取得も安全なfallbackとして振る舞います。信頼できないsourceを安全に実行するsandboxを意味するものではありません。
const result = evaluate(module)
const ast = staticValueToAST(result)04 / AST
文書rendererに渡すobject形式ASTは、評価済みvalueをstaticValueToAST()で変換して得ます。MatraModule、runtime value、document ASTは異なる役割です。旧Parser v0.2のsyntaxMode契約は現行v0.3に適用しません。
区別すること
このページは要約です。規範的な定義、全API契約、検証fixtureはリンク先のMatra仕様書を参照してください。