文法

ブロックと行

ほとんどのプログラミング言語はプログラムの中にコメントがある。パステルステッチでは codeendcode の間だけがプログラムであり、その外側はコメントである。これはドナルド・クヌースのいう「文芸的プログラミング」の影響を受けている。

endcode でコードを閉じたとき、同時にすべてのブロックが閉じられる。これは codeendcode を越えてブロックを続けることができないことを意味する。これはブロック (if, procedure など) が長大になるのを防ぐためである。ブロックが長大になることを防ぐための別の工夫として、procedure ブロックを入れ子にしても外側と内側の procedure ブロックに特に関係性は生じない (入れ子にせずに記述しても同じように動作する) という仕様がある。なお、endcode でコードを閉じたとき同時にすべてのブロックが閉じられることで、end のみから成る多数の行が続くことを抑制することも期待できる。

パステルステッチでは文の区切りは改行である。文の区切りにセミコロンなどの可視文字を使う言語と比べて、文の区切りの入力を忘れることが生じにくい (もし忘れていればすぐに気がつく) という利点がある。しかし、1 行に複数の文を書くことができないという欠点もある。パステルステッチではピリオドとセミコロンが未使用であるので、将来的にはこれらの文字を文の区切りに割り当てることが可能である。(他に、クエスチョンマーク、エクスクラメーションマーク、バーティカルバー、アンパサンド、パーセントなども理論上は候補に挙げられる。)

改行を越えて文を継続するには、行継続の記号を挿入する必要がある。改行が文の区切りであるほとんどのプログラミング言語では、改行の直前に行継続の記号を置く。(行継続の記号はバックスラッシュが多いようである。シェルスクリプト、C のプリプロセッサマクロなど。) パステルステッチは改行の直後に行継続の記号を置く。行の末尾よりも行の先頭の方が目に入りやすいので、パステルステッチの方式には、行継続の記号が目に入りやすいという利点がある。また、1 文が 3 行以上にまたがる場合、行継続の記号が同じ桁位置に揃うという利点もある。なお、ここで改行の「直前」または「直後」とは、改行と行継続の記号との間に空白文字が入ってもよいものとする。これはパステルステッチがそうであるし、他の多くのプログラミング言語も同じである。

倒置文は長大な文字列を引数とするときに用いると便利である。

演算子

パステルステッチの算術演算子の結合順位は、∗ が最強で、+ と − がそれに続き、/ が最弱である。除算 / が最弱であることは奇妙に思われるかもしれない。これは (.../...) というコードが分数であるかのように計算されるようにするためである。

右辺のないプラス記号は変数 #offset が省略されているとみなされる。これはサブルーチンでローカル化された記憶領域を使うときに便利である。たとえば、グローバルな記憶領域を指すために有名ベクトルを使って a と書くとすると、ローカル化された記憶領域は a + と書ける。

比較演算子は左向きの <, ≤, ⊂ はあるが、右向きのものはない。左向きの比較演算子があれば、右向きのものは、左辺と右辺を入れ替えることで実現できるためである。右向きではなく左向きを採用したのは、数直線で左が小さく右が大きいことが慣習になっているためである。

論理否定は ¬ と ⊥ の 2 種類があり、結合順位が異なる。これはパステルステッチに if があって else がないことと関係する。else のかわりに if ⊥ ... と書くとができる。⊥ は他の論理演算子よりも結合順位が低いので、⊥ の右辺を括弧で囲む必要がない。

読み出し演算

パステルステッチの読み出し演算の引数は名前付き引数である。読み出し演算の引数部の前置詞が、引数の名前に相当する。引数部が単独形式であるときは引数の名前を省略できる。このとき引数の名前は “main” であるとみなされるので、引数の値を参照するには #main などの変数を用いる。

名前

パステルステッチの「名前」には半角スペースを混ぜることができるが、この半角スペースは無視される。半角スペースを許すことで、名前を表記するとき、自然言語 (英語) と同じように表記することができる。名前を付けるときに 1 個の単語だけで済むことはまれで、複数の単語を組み合わせる必要があることが多いためである。また、半角スペースを無視するのは、表記の揺れ (スペースの有無) によって別の名前とみなされると煩雑であるためである。

また、前述のように、パステルステッチの名前には半角スペースを混ぜることができるので、スペースをトークンの区切りとして利用することができない。そのため、述語部と前置詞の区切りとしてコロンが必要であり、前置詞とその目的語の区切りとして何らかの括弧が必要である。

文字列定数

記号 ↵ と → はそれぞれ改行と水平タブを表す文字列素である。これらの記号を他の文字列素 ⟨...⟩ の内部に書くことはできない。かわりに、一度、文字列素を閉じてから、これらの記号を文字列素の外に書く必要がある。

文字列素を終端する記号 ⟩ は代用表記では閉じブラケット ] である。そのため、閉じブラケットを文字列素の内部に書くことはできない。かわりに、一度、文字列素を閉じてから、文字列素 _] を記述する必要がある。