Module minsh

ミニミニシェル.

Description

ミニミニシェル.

start(CmdMod) または start(CmdMod, InitArg) として起動する。 CmdMod はコマンドを実装しているコールバックモジュール名(アトム)、 InitArg はコールバックモジュールの初期化に使う引数である。 InitArg が省略されるとアトム none が初期化に使われる。

コールバック関数は:
  1. CmdMod:command_init(InitArg) -> InitState (省略可能)
  2. CmdMod:command_fin(LastState) -> ok (省略可能)
  3. CmdMod:command(Cmd::atom(), Arg, State) -> {ok, NewState}|{quit, LastState} (必須)

CmdMod:command/3の第1引数以外の引数型は任意である。

インタプリタ関数が {quit, LastState} を受け取ると、 CmdMod:command_fin(LastState) を呼び出してからシェルを終了する。

Function Index

exec_command/4*コマンドの実行.
finalize/2*コマンドモジュールの後始末.
fix_tokens/1*Tokensの末尾にドットがないときは付け足す.
init/2*コマンドモジュールの初期化.
interpret/3*入力行の解釈実行.
make_cmd_tuple/1*入力行から、コマンドアトムと引数タームを作る.
parse_term/1*文字列を解析してタームを作る.
shell_loop/3*シェルのループ.
split_line/1*入力行をコマンドと引数に分割する.
split_line/2*split_line/1 の作業関数.
start/1Equivalent to start(CmdMod, none).
start/2シェルの開始.

Function Details

exec_command/4 *

exec_command(Cmd::atom(), Arg::term(), CmdMod::atom(), State::term()) -> {ok, State::term()} | {quit, LastState::term()}

コマンドの実行

finalize/2 *

finalize(CmdMod::atom(), LastState::term()) -> ok

コマンドモジュールの後始末

fix_tokens/1 *

fix_tokens(Tokens) -> Tokens

Tokensの末尾にドットがないときは付け足す. Tokensに関しては erl_scan を参照。

init/2 *

init(CmdMod::atom(), InitArg::term()) -> term()

コマンドモジュールの初期化

interpret/3 *

interpret(Line::string(), CmdMod::atom(), State::term()) -> {ok, Cmd, Arg} | {error, Msg}

入力行の解釈実行

make_cmd_tuple/1 *

make_cmd_tuple(Line::string()) -> {ok, Cmd::atom(), Arg::term()} | {error, Msg}

入力行から、コマンドアトムと引数タームを作る

parse_term/1 *

parse_term(Str::string()) -> {ok, term()} | {error, Msg}

文字列を解析してタームを作る

shell_loop/3 *

shell_loop(CmdMod::atom(), State::term(), Prompt::string()) -> ok

シェルのループ

split_line/1 *

split_line(Line::string()) -> {string(), string()}

入力行をコマンドと引数に分割する

split_line/2 *

split_line(Looking::string(), Looked::string()) -> {string(), string()}

split_line/1 の作業関数

start/1

start(CmdMod::atom()) -> ok

Equivalent to start(CmdMod, none).

start/2

start(CmdMod::atom(), InitArg::term()) -> ok

シェルの開始


Generated by EDoc, Mar 29 2009, 17:27:02.