| パラダイム | パターンマッチングと用語書き換え |
|---|---|
| デザイン: | チャールズ・ハルパーン・ハム ジェームズ・コーディ |
| 開発者 | ジェームズ・コーディ チャールズ・ハルパーン・ハム イアン・カーマイケル エリック ・プロミスロウ |
| Webサイト | ホームページ |
TXL は、1985 年にトロント大学のCharles Halpern-Hamu とJames Cordyによって設計された特殊用途のプログラミング言語です。頭字語「TXL」は、もともと「Turing eXtender Language」の略で、この言語の本来の目的である、Turingプログラミング言語のバリアントと拡張機能の仕様と迅速なプロトタイピングにちなんで付けられましたが、現在では意味のある解釈はありません。
最新の TXL は、ソース変換を使用して言語ベースの記述、ツール、アプリケーションを作成、操作、および迅速にプロトタイプ化するために特別に設計されています。これは、高レベルでは一次関数型プログラミングを使用し、低レベルでは項書き換えを使用するハイブリッド関数型/ルールベース言語です。TXL の形式セマンティクスと実装は形式項書き換えに基づいていますが、パターン仕様の例のようなスタイルのため、項構造はユーザーからほとんど隠されています。
各 TXL プログラムには、2 つのコンポーネントがあります。1 つは、拡張 Backus-Naur Form を使用して(おそらくあいまいな)文脈自由文法として指定される、変換されるソース構造の記述です。もう 1 つは、1 次関数型プログラミングを使用して組み合わせたパターン / 置換ペアを使用して指定されるツリー変換ルールのセットです。TXL は、構文解析ルールと書き換えルールの両方の解釈、適用、順序、バックトラッキングをプログラマが明示的に制御できるように設計されており、アジャイル構文解析などのさまざまな文法ベースの手法を表現できます。
最初のコンポーネントは、パターン マッチングを使用して入力式をツリーに解析します。2 番目のコンポーネントは、Yaccと同様の方法でTerm-rewriting を使用して、変換された出力を生成します。
TXL は、設計回復などのソフトウェア分析およびリエンジニアリング タスクや、新しいプログラミング言語や方言のラピッド プロトタイピングで最もよく使用されます。
例
バブルソート[1]
%構文仕様 プログラムを定義する [数字を繰り返します] 定義終了
%変換ルール
ルールメイン
$ [繰り返し番号]を置き換える
N1 [数字] N2 [数字] 休憩 [繰り返し数字]
どこ
N1 [> N2]
による
N2 N1 休憩
終了ルール
階乗[2]
%構文仕様 プログラムを定義する [番号] 定義終了
%変換ルール
関数メイン
[プログラム]を置き換える
p [数字]
による
p [事実][事実0]
終了関数
機能事実
[数字]を置き換える
n [数字]
nMinusOne [数値] を構築する
数 [- 1]
どこ
1以上
factMinusOne [数値] を構築する
nマイナスワン [事実]
による
n [* ファクトマイナスワン]
終了関数
関数ファクト0
[数字]を置き換える
0
による
1
終了関数
参照
参考文献
- ^ 「アーカイブコピー」。2005年5月21日時点のオリジナルよりアーカイブ。2008年3月19日閲覧。
{{cite web}}: CS1 maint: アーカイブされたコピーをタイトルとして (リンク) - ^ 「アーカイブコピー」。2005年8月26日時点のオリジナルよりアーカイブ。2008年3月19日閲覧。
{{cite web}}: CS1 maint: アーカイブされたコピーをタイトルとして (リンク)
- JR Cordy、CD Halpern、E. Promislow、1991 年。「TXL: プログラミング言語方言のラピッドプロトタイピングシステム」。Computer Languages 16、1 (1991 年 1 月)、97-107 ページ。
- JR Cordy、2006 年。「TXL ソース変換言語」。コンピュータ プログラミングの科学 61、3 (2006 年 8 月)、190-210。
外部リンク
- TXLウェブサイト
