1K Views
June 27, 24
スライド概要
インタプリタとは Kou 1
自己紹介 Kou (@kou_tech_1017) 職業 - PG - Laravel、Reactがメイン 趣味 - NBA観戦 2
インタプリタとは... 3
Wikiの説明 インタプリタ(英: interpreter)とは、プログラミング言語で書かれた ソースコードないし中間表現を逐次解釈しながら実行するプログ ラムのこと。 4
翻訳すると インタプリタ = 「通訳者」 5
https://www.oreilly.co.jp/books/9784873118222/ 6
対象者 - インタプリタがいまいち分からない人 - インタプリタの全体的な仕組みを知りたい方 7
インタプリタ 1. 字句解析 2. 構文解析 3. 評価 8
1. 字句解析 9
字句解析 ソースコードがテキストのままでは、プログラムの部品として解釈 するのに扱いづらい。 例えば、次のようなノイズは除去したい。 ● スペース、「\t」、「\n」、「\r」 後続処理で扱いやすくするために、トークン列に分解する。 10
トークン列とは ソースコードを解析する際の最小単位であり、後続処理でどのよ うに実行されるべきかを理解するための基礎となる。 構成要素は字句解析器の実装によって異なる。 例 Type Literal LET let IDENT x = = 11
字句解析例 12
1文字トークン 次のような文字が該当する。 ● 「+」、「ー」、「;」、「”」 13
キーワード JavaScriptだと次のようなキーワード(予約語)がある。 ● 「let」、「if」、「function」、「async」など ※ 一部のキーワードは「文脈的に予約されている」 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Lexical_grammar 14
2文字トークン 次のような文字が該当する。 ● 「==」、「!=」 1文字トークンである「!」、「=」と区別する必要がある。 ● 直後の文字を確認する関数を設けて先読みする。 15
2. 構文解析 16
構文解析 構文解析は、ソースコードの構造と意味を「理解」し、「明らかにす る」作業である。 ソースコードを一連のトークン列(字句解析の結果)として受け取 り、それを抽象構文木(AST)などの高度なデータ構造に変換す る。 17
AST (抽象構文木) プログラムの構造をTree形式で表現したものである。 ソースコードの各部分(変数、演算子、式など)がノードとして表現 され、それらが親子関係を持つ形で接続される。 一つだけの決まったASTの形式というものは存在しない。 18
文の構文解析 ここでは、「文」とは「値を生成しないもの」とする。 「let文」、「return文」などがある。 トークンを左から右に処理するので、比較的理解しやすい。 英語で、「Statement」と表現される。 19
文のAST例 let x = 5; 20
式の構文解析 ここでは、「式」とは「値を生成するもの」とする。 「文」のときよりも考慮事項が多い。 トークンの出現位置の正当性は、文脈、前後のトークン、それらの 優先順位で決定する。 英語で、「Expression」と表現される。 21
式のAST例 a+b/c 22
3. 評価 23
評価 解釈されたプログラムがどのように動作するかを定義する。 プログラムの解釈は、動作定義と評価戦略によって決まる。 インタプリタとコンパイラの境界は曖昧である。 - 抽象構文木(AST)を直接解釈 - ASTを最適化や他の適した中間表現へ書き換え - ASTを構築せずに解釈 24
評価例 1+2*3 =1+6 =7 25
最後に 日々利用しているものの原理や原則に目を向けてみる。 これらの知識は、直接的には業務に役立たないかもしれません が、長期的な視点で見ると、深い理解と洞察を得るための重要な ステップとなるためおすすめ。 26