LoginSignup
3
4

More than 3 years have passed since last update.

C#のみを使ってコンパイラを作ってみた(途中経過)

Posted at

コンパイラとは

原始プログラム(任意の言語)から目的コードを生成するものを言います
メタプログラミングの究極ともいわれたり言われてなかったり

注意

手探りで作成していますので間違っている部分もあると思います

何を使うのか

今回はC#だけを使います
もちろんライブラリは.net freamwork標準のものだけです
それ以外は使いません

どのような処理か

処理の流れは以下のようになっています

字句解析

構文解析

意味解析

最適化(最近はされないものも多い)

コード生成

字句解析

その名の通り文字をトークン(token)で分けます
その時文字情報とともにトークンの情報を持っておきます

構文解析

構文解析は構文を木構造にして構文情報をまとめます

意味解析

型のチェックや構文解析では調べきれなかった部分を調べます

最適化

中間コードに変換後に実行速度を上げるための処理です

コード生成

コード生成はwindowsであればexeを生成するわけです

現在の進捗

現在私のコンパイラは構文解析ができたところです
コンパイラの作成においてある程度の機能をある程度少しづつ実装した場合がよいと思います

最後に

コンパイラが完成し次第作成方法などを詳しく書きたいと思います

3
4
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
3
4