5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オブジェクト指向Cコンパイラ、comelangをgithubで公開しています

Last updated at Posted at 2024-10-12

題名の通りです。リファレンスカウントGCを持ちJavaやGoのように気楽にヒープを生成できます。

Hello Worldは以下です。

#include <stdio.h>

int main(int argc, char** argv)
{
    puts("HELLO WORLD");
    return 0;
}

Cそのものです。Cプリプロセッサーが動きます。なので、Cのライブラリがそのまま使えます。

comelangらしいHelloWorldは

#include <comelang.h>

int main(int argc, char** argv)
{
    puts("HELLO" + " WORLD");

    return 0;
}

です。"HELLO" + "WORLD"でヒープが生成されていますが、puts後に自動的にfreeされます。

追記可能なbufferというクラスを使うと

#include <comelang.h>

int main(int argc, char** argv)
{
    var buf = new buffer();

    buf.append("HELLO").append(" WORLD");

    puts(buf.to_string());

    return 0;
}

です。

stringクラスを使うと

#include <comelang.h>

int main(int argc, char** argv)
{
    string str = s"HELLO";
    string str2 = string("HELLO");

    puts(str + " " + str2);

    return 0;
}

となります。

クラスを使うと

#include <comelang.h>

class HelloWorld
{
    new() {
        string self.str = string("HELLO");
        string self.str2 = string("WORLD");
    }

    void show() {
        puts(self.str + " " + self.str2);
    }
}

int main(int argc, char** argv)
{
    var h = new HelloWorld();

    h.show();

    return 0;
}

となります。

listを使うと

#include <comelang.h>

int main(int argc, char** argv)
{
    var li = new list<string>();

    li.add(s"HELLO").add(s"WORLD");

    puts(li.join(" "));

    var li2 = [s"HELLO", s"WORLD"];

    puts(li2.join(" "));

    return 0;
}

となります。

comealngは標準Cライブラリにしか依存していないため、標準Cライブラリが動く環境ならどこでも動きます。

ドキュメントはREADMEにあります。

インストールは

> git clone https://github.com/ab25cq/comelang
> cd comelang
> sh fast_build.sh && sh clean-self-host.sh

で行えます。

> sh all_build.sh

でエディッターvin, シェルshsh, テキストインタプリタzedがコンパイルされます。

webサーバーとdatabaseサーバーは

> cd webweb;
> sh all_build.sh

で立ち上がります。localhostにhttpsでサイトが表示されます(CA認証を無視しないといけませんが)

5
5
2

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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?