2

Rascal が他の言語のメタ言語になることを意図していることは知っています。これらの言語には Rascal 自体が含まれていますか? quotea la Lisp のようなメタ機能が利用可能または計画されていますか?

4

1 に答える 1

1

Rascal 構文定義を含め、通常の引用符を使用するだけで、Rascal を使用して Rascal を変換できます。Rascal 自体の実行時にクォートを追加する予定はありません。

前に言い忘れたことの 1 つは、「リソース」メカニズムを使用して、「インポート」時に Rascal コードを操作できることです。次のように任意の関数を記述できます。

@resource{myScheme}
str generateNewCode(str name, loc l) = ...

generateNewCodename の Rascal モジュールを生成する必要がありますname

この後、次のようにインポートできます。

import MyModule = myScheme://someOtherModuleName;

そして、generateNewCode によって生成されたモジュールは、インポートを入力したモジュールで Rascal によってインポートされます。

別のモジュールを解析し、それを書き換えまたは拡張してからインポートされる generateNewCode 関数を作成することを妨げるものは何もありません。

于 2013-10-21T09:00:49.537 に答える