Top / LLPML

Low Level Programming Markup Language (LLPML)

CompilerLib?を利用したXMLの低レベルな言語処理系です。(関連日記

#ref(): File not found: "LLPML-0.5-20070819.png" at page "LLPML"

ダウンロード

過去のリリース

今後の課題

  1. 【済】ASTのオブジェクト化
  2. 【済】ブロックによる変数のスコープ
  3. 【済】関数
  4. 【済】構造体
  5. 【済】制御構造、算術演算
  6. クラス
  7. DLL
  8. GC
  9. 自分自身の記述(=LLPMLとCompilerLibをLLPMLで記述する)
  10. 図形言語

図形言語の内部処理用を想定しているため記述性は低いです。ASTをXMLで記述するというイメージです。

以下のC言語と同等のものを作成します。

#include <windows.h>

int main()
{
    HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
    const char *hello = "Hello, World!\r\n";
    DWORD dummy;
    WriteConsole(stdout, hello, strlen(hello), &dummy, NULL);
    return 0;
}

LLPMLでは以下のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<llpml version="0.4.20070816">

<extern name="GetStdHandle" module="kernel32.dll" type="std" />
<extern name="WriteConsoleW" module="kernel32.dll" type="std" />

<int-declare name="STD_OUTPUT_HANDLE">-11</int-declare>
<var-int-declare name="stdout" />
<let>
	<var-int name="stdout" />
	<call name="GetStdHandle">
		<int name="STD_OUTPUT_HANDLE" />
	</call>
</let>

<string-declare name="hello">Hello, World!
</string-declare>
<var-int-declare name="dummy" />
<call name="WriteConsoleW">
	<var-int name="stdout" />
	<string name="hello" />
	<string-length name="hello" />
	<var-int-ptr name="dummy" />
	<int>0</int>
</call>

</llpml>

コメント



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS