2019年9月3日火曜日

C言語インタープリターで遊ぶ

最近人気のPythonですが、Python自体は結構サイズが大きくて、Pythonを動かすのにたくさんのライブラリが必要です。
手軽に動かせる軽量のインタープリタ言語ないかなぁ。

調べてみると、picocというコンパクトなC言語インタープリタがあるらしい。
ということで、C言語インタープリタをビルドしてみました。

https://github.com/jpoirier/picoc
https://gitlab.com/zsaleeba/picoc


このpicocですが、ソースを見る限り簡単に拡張できます。
関数ポインターは実装されていないけれど、結構本格的なC言語が実装されています。
system()とかの関数も動くので、これちょっとしたスクリプトやマクロの代わりに使えるじゃん。

とりあえず、インタープリタを拡張して、dlopen()やdlsym()も動くようにしてみました。
これで、いろんなDLLをよんでいろんなことができる。


---------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#ifdef _WIN32
#include <windows.h>
#endif
#ifdef unix
#include <unistd.h>
#endif


#define MAX_AAA 50
#ifdef MAX_AAA
#define MAX_BBB 100
#endif

#ifdef _WIN32
#define PLAT "Windows"
#else
#ifdef unix
#define PLAT "unix"
#else
#ifdef PICOC_VERSION
#define PLAT "picoc"
#else
#define PLAT "unknown"
#endif
#endif
#endif

#define print(a) printf("%s\n",a);

static int test()
{
printf("test()\n");
return 123;
}


int main()
{
void* vp=(void*)0x12345678;
double d=0;

printf("test hello %d \n",MAX_BBB);
printf("PLAT=%s\n",PLAT);
printf("vp=%p\n",vp);
test();
system("cmd");

return 0;
}

---------------------------

0 件のコメント:

コメントを投稿