はじめに
C言語はコンパイラ言語である。そのため、C言語でコーディングされた関数を実行するためには、コンパイルして実行プログラムを生成しなければならない。そこで、アルゴリズムを手軽に検証することを目的として、インタープリタ「CLIP」が設計された。
検証という性質上、必然的にインタープリタ「CLIP」での、計算の精度はC言語と同等である。C言語と同種類の演算子を使用することができ、優先順位は同じである。また、ANSI数学関数が組み込み関数として用意され、実行結果は同じであることが保証される。
CLIP言語書式に関しては、計算処理に特化させている。C言語では、変数への代入も含めて一行で計算を完結させる必要があるのに対して、CLIP言語は、「計算結果用変数」の概念を持ち、計算記述が変数への代入の形になっていない場合、自動的に「計算結果用変数」に代入され、計算結果が保持される。そのため、計算記述を演算子から始めることができ、その場合、演算子の左辺は「計算結果用変数」になる。
C言語の場合、コンパイルという段階があるため、例えば-(マイナス)文字が単項演算子であるのか二項演算子であるのか、あるいは浮動小数点定数の指数表記で使われているのかを、計算記述の前後から解釈することができる。CLIP言語では、インタープリタでの解釈効率を考えて、プログラマ側が文字の意味を特定しないといけない場合がある。例えば上記の例では、単項演算子としてのマイナスは[-]、二項演算子としてのマイナスは-、浮動小数点定数の指数表記でマイナス文字を使用する場合はエスケープ文字\でエスケープして\-と、それぞれ記述が異なる。
なお、+(プラス)文字と-(マイナス)文字に関しては、別の理由がある。それは、前述したようにCLIP言語では、計算記述を演算子から始めることができるため、単項演算子と二項演算子とを識別することが不可能であることを理由とするものである。例えばC言語風に計算式を
-123
と記述した場合、これが「負数の-123」であるのか、「現在の計算結果から123を引く」を意味するものであるのか識別できない。CLIP言語では、前者を
[-]123 または \-123
と記述することにより、識別が可能となる。