七誌の開発Wiki - LLPML
Low Level Programming Markup Language (LLPML)
C#とJavaScriptを混ぜたような独自言語によるネイティブコンパイラです。
CompilerLib
を利用しています。
C#で作成されているため、コンパイラの動作には.NET Frameworkが必要です。
出力はネイティブバイナリです。.NET Frameworkに依存しないためランタイムなしで動きます。
LLPMLと同等のものをLLPMLで書き直しているのが
Andromeda
です。
現在の方針
名前に Markup Language と付いているのは、当初XMLでプログラムの記述を行っていた名残です。現在はXMLを使用していません。
C言語にC++やC#の要素を取り入れて焼き直したような言語です。
構文がJavaScript風なのは、パースが簡単だからです。なるべくC#と同じ記述を取り入れたいと考えていましたが、実装の都合による妥協などもあり、現時点ではC#から乖離しています。
自分自身を記述するのに必要な要素を実装します。
ちょっとした工夫(あれば便利で実装もあまり難しくない機能)もなるべく取り入れます。
マングリングを避けるため、関数のオーバーロードはサポートしません。
自分自身の記述に不要なため、64bit整数型や浮動小数点数型(float, double)はサポートしません。
型推論による多相型、もしくは明示的なgenericsは、実装がかなり難しいと思われます。実装が望ましい機能ですが、ちょっとした工夫の枠内を超えているため、現時点では見送ります。
以上は必要に応じて変更する可能性があります。
リポジトリ
http://github.com/7shi/LLPML
ダウンロード
LLPML-1.7-20090115.zip
- 無名クラス、修正(プロパティ、ビルドルール、レキシカルスコープ) ⇒
関連日記
ライセンス: パブリックドメイン
開発環境: Visual C# 2008 Express Edition ⇒
無料ダウンロード
(
オフラインインストール
推奨)
過去のリリース
LLPML-1.6-20090112.zip
- 修正(ビルドルール、レキシカルスコープ、base、メンバ) ⇒
関連日記
LLPML-1.5-20081207.zip
- 修正(デストラクタ、nullのキャスト、多重override、コード再生成)
LLPML-1.5-20081025.zip
- 修正(部分クラス、標準出力、byte/short/ushort、配列、Lengthプロパティ)
LLPML-1.5-20081022.zip
- エラー複数表示対応
LLPML-1.5-20081021.zip
- 修正(エラー表示、コード生成、配列のキャスト、プロパティのプロパティ、sizeof)
LLPML-1.5-20081016.zip
- コード生成サポート、クラス外から定数を参照
LLPML-1.4-20081015.zip
- エスケープシーケンスの修正、C#風の@文字列、部分クラス
LLPML-1.3-20081014.zip
- 基底クラス、構造体とクラス間の継承を禁止、未定義エラーの修正、仮想関数の戻り値を修正、switchで文字列
LLPML-1.2-20081013.zip
- 未定義エラーの修正、仮想関数の前方参照、文字列にcharやintを加算
LLPML-1.2-20081008.zip
- プロパティのバグ修正、キャストの修正
LLPML-1.2-20081007.zip
- 更新の必要性を判断
LLPML-1.2-20081005.zip
- プロジェクト対応、サンプルブラウザ廃止、継承の前方参照
LLPML-1.1-20080926.zip
- Mono対応 ⇒
関連日記
LLPML-1.1-20080920.zip
- Windows CE(x86)対応 ⇒
関連日記
LLPML-1.0-20080915.zip
- 1.0をリリースしました ⇒
関連日記
1.0以前の開発版