インタプリタとは

1K Views

June 27, 24

スライド概要

profile-image

PHPをメインにサービス開発しているプログラマー

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

インタプリタとは Kou 1

2.

自己紹介 Kou (@kou_tech_1017) 職業 - PG - Laravel、Reactがメイン 趣味 - NBA観戦 2

3.

インタプリタとは... 3

4.

Wikiの説明 インタプリタ(英: interpreter)とは、プログラミング言語で書かれた ソースコードないし中間表現を逐次解釈しながら実行するプログ ラムのこと。 4

5.

翻訳すると インタプリタ = 「通訳者」 5

6.

https://www.oreilly.co.jp/books/9784873118222/ 6

7.

対象者 - インタプリタがいまいち分からない人 - インタプリタの全体的な仕組みを知りたい方 7

8.

インタプリタ 1. 字句解析 2. 構文解析 3. 評価 8

9.

1. 字句解析 9

10.

字句解析 ソースコードがテキストのままでは、プログラムの部品として解釈 するのに扱いづらい。 例えば、次のようなノイズは除去したい。 ● スペース、「\t」、「\n」、「\r」 後続処理で扱いやすくするために、トークン列に分解する。 10

11.

トークン列とは ソースコードを解析する際の最小単位であり、後続処理でどのよ うに実行されるべきかを理解するための基礎となる。 構成要素は字句解析器の実装によって異なる。 例 Type Literal LET let IDENT x = = 11

12.

字句解析例 12

13.

1文字トークン 次のような文字が該当する。 ● 「+」、「ー」、「;」、「”」 13

14.

キーワード JavaScriptだと次のようなキーワード(予約語)がある。 ● 「let」、「if」、「function」、「async」など ※ 一部のキーワードは「文脈的に予約されている」 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Lexical_grammar 14

15.

2文字トークン 次のような文字が該当する。 ● 「==」、「!=」 1文字トークンである「!」、「=」と区別する必要がある。 ● 直後の文字を確認する関数を設けて先読みする。 15

16.

2. 構文解析 16

17.

構文解析 構文解析は、ソースコードの構造と意味を「理解」し、「明らかにす る」作業である。 ソースコードを一連のトークン列(字句解析の結果)として受け取 り、それを抽象構文木(AST)などの高度なデータ構造に変換す る。 17

18.

AST (抽象構文木) プログラムの構造をTree形式で表現したものである。 ソースコードの各部分(変数、演算子、式など)がノードとして表現 され、それらが親子関係を持つ形で接続される。 一つだけの決まったASTの形式というものは存在しない。 18

19.

文の構文解析 ここでは、「文」とは「値を生成しないもの」とする。 「let文」、「return文」などがある。 トークンを左から右に処理するので、比較的理解しやすい。 英語で、「Statement」と表現される。 19

20.

文のAST例 let x = 5; 20

21.

式の構文解析 ここでは、「式」とは「値を生成するもの」とする。 「文」のときよりも考慮事項が多い。 トークンの出現位置の正当性は、文脈、前後のトークン、それらの 優先順位で決定する。 英語で、「Expression」と表現される。 21

22.

式のAST例 a+b/c 22

23.

3. 評価 23

24.

評価 解釈されたプログラムがどのように動作するかを定義する。 プログラムの解釈は、動作定義と評価戦略によって決まる。 インタプリタとコンパイラの境界は曖昧である。 - 抽象構文木(AST)を直接解釈 - ASTを最適化や他の適した中間表現へ書き換え - ASTを構築せずに解釈 24

25.

評価例 1+2*3 =1+6 =7 25

26.

最後に 日々利用しているものの原理や原則に目を向けてみる。 これらの知識は、直接的には業務に役立たないかもしれません が、長期的な視点で見ると、深い理解と洞察を得るための重要な ステップとなるためおすすめ。 26