WebAssemblyのWikipediaページを読んでいたところ、「WebAssemblyは…JavaScriptよりも高速に解析できるように設計されています」と書かれているため、特定の言語やデータ形式を他の言語やデータ形式よりも高速に解析できる理由と、解析アルゴリズムについて教えてください中古?
WebAssemblyのWikipediaページを読んでいたところ、「WebAssemblyは…JavaScriptよりも高速に解析できるように設計されています」と書かれているため、特定の言語やデータ形式を他の言語やデータ形式よりも高速に解析できる理由と、解析アルゴリズムについて教えてください中古?
回答:
このトピックは非常に複雑です。パーサーアルゴリズムをググると、詳細な資料がたくさん得られます。
一般に:
次に例を示します。JS
パーサーがfunction
このコードのfunction xyz(a, b) {}
キーワードを見つけた場合、関数キーワードはあいまいです。それは最初に次のトークンを処理し、xyz
それが関数宣言であると判断する前に、それが識別子であることを確認する必要があります。
ただし、次のトークンがaの場合は(
、関数リテラルを処理していますfunction(a, b) {}
。そのため、パーサーの動作が大きく異なるため、パーサー内のコードが多くなり、実行が遅くなります。
これら2つの目的に異なるキーワードがあったとしても、あいまいさはありません。
function_decl xyz(a, b, c) {}
そして function_lit(a, b, c) {}
しかし、誰もそのような言語で書きたくないでしょう。ただし、WebAssemblyは手動で作成することを想定していません。これにより、言語を人間ではなく機械に合わせて調整できます。