# Ngraphスクリプト

- 概要
- スクリプトの文法
- スタートアップスクリプト
- コマンドラインオプション

## 概要

Ngraph はスクリプト言語(Ngraph スクリプト)のインタープリタを備えています。 グラフの設定(実際には各オブジェクトOBJECTのフィールド値)もNgraph スクリプト形式で保存されます。

## スクリプトの文法

Ngraph スクリプトの文法は， UNIX の sh (シェル) からジョブ制御機能を取り去り, オブジェクト操作命令を追加したものになっています。

shと同等の文法・コマンドは以下の通りです(sh の文法の詳細については UNIX のマニュアルを参照してください)。

### コマンド

name1=val1 name2=val2 ... command arg1 arg2 arg3 ...

### コメント

# comment

### 制御構造

(for, case, if, while, until 文)

for name [in word] do list done
case word in [pattern [|pattern] ...list;;] ... esac
if list then list [elif list then list]...[else list] fi
while list do list done
until list do list done

### 関数定義

name() { list; }

({}は常に必要)

### ファイル名置換

*?[]

### コマンド置換

`command`

### 変数定義

name=value [ name=value ] ...

### 変数置換

$# $? $num $* $@
${name}
${name:-word}
${name:=word}
${name:?word}
${name:+word}
${name#word}
${name##word}
${name%word}
${name%%word}

### リダイレクト・パイプ

< file
<<[-]word
> file
>> file
command | command

### 特殊コマンド

:
. file
break [n]
continue [n]
cd
echo [-q]
eval [arg]
exit [n]
export [name]
pwd
return [n]
set
shift [n]
unset
test
[
sleep
true
false
read [val]
seq [last | first last | first incr last]
basename name [suffix]
dirname name
which [-q]

独自に追加した文法・コマンドは以下の通りです。

### オブジェクト定義

(objectのinstance_listのfieldにvalueを設定)

object:instance_list:field=value

### オブジェクト置換

(objectのinstance_listのfieldの値)

${object:instance_list:field=argument}

### オブジェクト操作コマンド

new object [field=value, ...]
del object:instance_list
exist [-q] object:instance_list
get object:instance_list [-write -field -id -quote] field=argument ...
put object:instance_list field=value ...
exe object:instance_list field=argument ...
cpy object:source,destination[,destination,...] field ...
dup object:instance_list
move object:instance1,instance2
movetop object:instance
movelast object:instance
exch object:instance1,instance2
object [object1 object2 ... [-name -version -parent -id -field -size -current -last -instnace -instances] [field ...]]
derive [-instance] object

### 評価コマンド

(数式expを評価)

dexpr exp
iexpr exp

## スタートアップスクリプト

Ngraph は実行時に

1. ~/.Ngraph
2. /etc/ngraph-gtk

をこの順番で検索し, はじめに見つかったスタートアップスクリプトファイル (Ngraph.nsc) を自動的に読み込みます。
コマンドラインオプション

-i script_name

でスタートアップスクリプトを明示的に指定する事もできます。
スタートアップスクリプトファイルは Ngraph 独自のマクロ言語 (Ngraph スク リプト) で記述されており, ユーザがカスタマイズすることもできます。

- Ngraph のコマンドラインオプションは(上記 -i オプションを除いて)全てスタートアップスクリプトファイルに渡されます。
- 配布状態では, スタートアップスクリプトファイルは
  1. 起動するユーザインターフェースの指定(system::login_shell)
  2. アドインスクリプト設定メニューの登録
  3. Ngraph.ngp の読込 (Ngraph.ngp は[設定]-[初期状態として保存(グラフ)]で作成できます)
  4. コマンドラインオプションの解析
  を行います。

## コマンドラインオプション

Ngraph を起動する時のコマンドラインオプションの形式は

ngraph [-i script_name] [option1 option2 ...]

で、-i オプションでスタートアップスクリプトを指定します。 残りのオプションは全てスタートアップスクリプトに渡され、その中で解析されます。 スタートアップスクリプトはユーザがカスタマイズする事ができるので、独自のコマンドラインオプションを作成する事ができます。
配布状態のスタートアップスクリプト(Ngraph.nsc)で有効なコマンドラインオプションは以下の通りです。

-x num
  x 軸のデータカラムを num にします。
-y num
  y 軸のデータカラムを num にします。
-X -U
  データの x 軸をそれぞれ X, U 軸にします。
-Y -R
  データの y 軸をそれぞれ Y, R 軸にします。
-d type
  プロットタイプを type にします。
-m num
  マークを num にします。
-o num
  マークのサイズ num にします。
-l sylte
  線種を style にします(-l "100 100" の様に指定)。
-w num
  線幅を num にします。
-cr R -cg G -cb B
  プロット色を R G B にします。
-CR R -CG G -CB B
  第二プロット色を R G B にします。
-s num
  先頭スキップ行を num にします。
-r num
  読込ステップ行数を num にします。
-f num
  最終行数を num にします。
-vx num
  x 隣接平均数を num にします。
-vy num
  y 隣接平均数を num にします。
-mx math
  x 変換数式を math にします。
-my math
  y 変換数式を math にします。
-ex type
  x 軸のスケール方法を type (linear, log, inverse) にします。
-ey type
  y 軸のスケール方法を type (linear, log, inverse) にします。
-minx min -maxx max -incx inc
  x 軸のスケールを min, max, inc にします。
-miny min -maxy max -incy inc
  y 軸のスケールを min, max, inc にします。
-g
  データファイルから設定を読み込みます。
-png file -pdf file -ps file -eps file -svg file -gra file
  ngp ファイルをそれぞれの画像ファイルに変換します。
-p ngp_file
  ngp_file を印刷します。
-P
  ngp ファイルを外部ドライバを利用して印刷します。