0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コンパイラの処理内容

Last updated at Posted at 2022-12-22

コンパイラとは?

ソースコードを実行可能な形式に変換してくれるプログラムです。この変換作業を「コンパイル」と呼び、コンパイルできるプログラミング言語のことを「コンパイラ言語」といいます。

ソースコード全体を一度に変換し、その結果を実行ファイルとして出力するというのがコンパイラの基本的な動作です。

出典

*  プログラム言語で記述された原始プログラムを翻訳して目的プログラムを生成するためのソフトウェアである。コンパイラの処理過程において、構文解析は字句解析が字句を読み込みながら構文木を生成し、その字句の列が文法で許されているかどうかを解析する。

出典

原始プログラムとは?

ソースコード」のこと。用語の中身としては人間語で書いたプログラムの元ネタのこと

出典

字句解析

原始プログラムの文字列から、字句(変数名、演算子、予約語、定数など)を切り出す

構文解析

切り出した軸の構成が、構文規則に従っているかどうかを検査する。構文上の誤りを見つけると報告する。構文解析の結果は構文木で表す。

構文木

構文木(こうぶんぎ)とは、構文解析の経過や結果(またはそれら両方)を木構造で表したもの。

出典

目的プログラムとは?

ソースコードをコンパイルしたものだよ

出典

後置表記法(逆ポーランド表記法)

演算子(+,-,×,÷など)を被演算子(数値や変数,また計算の結果)の後ろに書くことで数式を表現する方法です。

  • 一般的に 12 + 34 と記載すると、数学的には演算子の優先順位を考慮して、(12)+(34) のように乗算を先に行う。このような優先順位を表現する時に、()を使わない方法として、逆ポーランド記法がある。
    演算子の書き方には、前置記法、中置記法、後置記法があり、後置記法は、「2と3を掛ける、それに1を加える」と捉えると、日本語の処理と似ている。

    • 中置記法 1+2*3
    • 前置記法 +,1,*,2,3
    • 後置記法 1,2,3,*,+  # 1と「2と3をかけた値」をたす。
  • 後置記法は、一般的に逆ポーランド記法(Reverse Polish Notation)とも呼ばれ、式を機械語の命令に置き換える際に役立つ。
    演算子の右結合・左結合
    例えば、”1/23″という式が与えられたとする。この結果は、1/6だろうか?3/2だろうか?
    一般的な数学では、優先順位が同じ演算子が並んだ場合、左側から計算を行う。つまり”1/2
    3″は、”(1/2)*3″を意味する。こういった左側の優先順位が高い演算子は左結合の演算子という。
    ただしC言語では、”a = b = c = 0″ と書くと、”a = (b = (c = 0))” として扱われる。こういった代入演算子は、 右結合の演算子である。

出典

2分木を深さ優先で探索するとは?

p144 根から始めて、左の方からかつ、葉のほうから巡回する方法。

出典

BNF/バッカス・ナウア記法

感想

BNF/バッカス・ナウア記法を理解するのに苦労したが理解できてよかった。
字句解析して構文解析してそれを逆ポーランド記法で表現していた。

出典

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?