1
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?

自作プログラミング言語の設計!3(コンパイラー)

1
Posted at

まえがき

少し期間があきましたが、前回の続きから始めます...

コンパイラー(リンカーも含む)

頑張って作りました!

ここでは「コンパイラー」と呼んでいますが、
やっていることはどちらかと言うと「build」(「compile?」+「link」)なので、
どう呼ぶのが正しいのでしょうか?

以下で引っかかった部分をピックアップします

字句解析(Tokenize)

再帰構造での探査は避けて、あくまでwhileループでそれぞれの構文に基づいてトークン化を行いました

構文解析(Parse)

式の解析

簡単に説明すると、

  • 足し算、引き算「+」「-」
  • 乗算、除算、剰余(「*」「÷」「%」)
  • 比較演算(「==」「!=」「>=」)
  • 論理演算(「&」「|」)
  • その他(「!」「-」「(」「)」)  

以上の層に分けて処理をします

例えば、以下の感じ...

function parse_mul(data, index)
{
    result = [];
    ret, index = parse_logic(data, index);
    result.push(ret);
    while (data[index] == Type_MUL)
    {
        index++;
        ret, index = parse_logic(data, index);
        result.push(ret);
    }
}

翻訳(compile)

今回はhtml出力とexe出力を考えるうえで、機械語に変えてしまうと困るので、
ほとんどやっていない感じ?です...

結合(link)

ここに書くのが正しいのかはわかりませんが、以上によるデータをつかって出力を作成する感じです

おわり

今回はこれまでにします
続きは ここ から!

ありがとうございました

1
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
1
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?