PCAST L ( by Parent and Childset Accessible Syntax Tree Languageの頭文字をとった略語)は、インタプリタ型の高水準プログラミング言語です。2008年にPhilippe Choquetteによって作成されました。[ 1 ] PCASTLは、自己修正コード の記述を容易にするように設計されています。この言語には、現在記述されているコードの構文ツリーのノードにアクセスするための予約語parentとchildsetがあります。 [ 2 ]
「ハローワールドプログラム」は非常にシンプルです。
"こんにちは世界!"
または
print("こんにちは、世界!") 同じことをするだろう。
PCASTLの構文は、プログラミング言語CとRから派生しています。PCAST Lインタープリタで使用される文法と字句解析器を作成するために、 Rバージョン2.5.1のソースコードが研究されました。
Rと同様に、ステートメントはセミコロンで区切ることができますが、必ずしもそうする必要はありません。[ 3 ] R と同様に、変数はセッション内で型を変更できます。CやRと同様に、PCASTL はバランスの取れた括弧( {と} ) を使用してブロックを作成します。
PCASTL に含まれる演算子は、 Cの対応する演算子と同じ優先順位と結合規則を持っています。[ 2 ] [ 4 ] forループはCと同様に定義されています。また、演算子はCと同様に、式で使用される前または後に変数をインクリメントまたはデクリメントするために使用されます。++--
for ( i = 1 ; i < 4 ; i ++ ) print ( i )PCASTLにおける関数とコメントは、 Rと同様に定義されます。
# 関数定義(コメント)a = function () { print ( "Hello, world!" ) }# 関数呼び出しa ()これらの予約語は小文字でしか記述できず、それ以外の場合は認識されません。親予約語は、コードの構文ツリー内でその単語が配置されている親ノードへの参照を示します。次のコードでは、親ノードは演算子です。=
a = 親
変数「a」にはノードへの参照が格納されます。次のコードは、 childset予約語を使用して演算子の 2 つの子ノードへの参照=を取得する方法を示しています。=
a.childset[0] a.childset[1]
「a」の値を表示するには、いくつかの方法があります。以下に例を示します。
1 a.childset[0].parent a.childset[1].parent a.childset[0].parent.childset[0].parent # 以下同様...
以下のコードでは、ノードの右の子にコードセグメントを割り当て=、ノードを2回目に実行し=、新しく定義した関数を呼び出します。
a.childset[1] = `function() print("hello")' 実行(a) a()