sno コマンド

目的

SNOBOL インタープリターを提供します。

構文

sno [File ...]

説明

sno コマンドは、SNOBOL コンパイラーおよびインタープリターを提供します。 これらは標準 SNOBOL とは一部が異なります。 このコマンドは指定されたファイルと標準入力を読み取り、end ラベルを含むステートメントまでの入力をすべてコンパイルします。 残りは疑似変数 syspit で使用できます。

sno コマンドは、以下の点で標準 SNOBOL と異なります。

  • アンカーなしの検索は行いません。同じ効果を得るには、以下のような行を使用してください。
    項目 説明
    a ** b b のアンカーなしの検索を行います。
    a *x* b = x c アンカーなしの割り当てを作成します。
  • 逆参照機能はありません。

    x = "abc"

    項目 説明
    a *x* x abc のアンカーなしの検索を作成します。
  • 関数宣言は、 define ラベル (重複可) を使用してコンパイル時に行われます。関数呼び出しの実行は、define ラベルの次のステートメントから始まります。 関数は実行時に定義することはできず、名前 define は優先使用されています。 パラメーター以外に自動変数は提供されません。 例えば、次のようにします。
    define f()
    define f(a, b, c)
  • define を除くすべてのラベルには (end にも)、空ではないステートメントがなければなりません。
  • ラベル、関数、および変数にはそれぞれ別個の名前が必要です。特に end についての空ではないステートメントには、ラベルを指定するだけということはできません。
  • start がプログラム内のラベルであるときは、プログラムの実行はその位置から開始されます。そうでなければ、プログラムの実行は最初の実行可能ステートメントから行われます。 define ラベルは実行可能ステートメントではありません。
  • 組み込み関数はありません。
  • 算術計算用の括弧は不要です。通常の計算順序が適用されます。 そのため、算術用演算子 ¥ (円記号) および * (アスタリスク) は、スペースで区切らなければなりません。
  • 割り当ての右辺は空であってはいけません。
  • リテラル引用符には、 ' (単一引用符) または " (二重引用符) のいずれも使用できます。
  • 疑似変数 sysppt は使用できません。

ファイル test.ssno コマンドで実行し、 出力を output ファイルに転送するには、以下のように入力します。

sno < test.s > output

ファイル

項目 説明
/usr/bin/sno sno コマンドが入っています。