No. 255/622 Index Prev Next
Path: titcca!sragwa!srava!yosikazu
From: yosikazu@srava.sra.JUNET (Yoshikazu Hayashi)
Newsgroups: fj.lang.misc,fj.kanji
Subject: Re: Nihonngo C-shell (In Japanese/Kanji)
Message-ID: < 1384@srava.sra.JUNET> 
Date: 1 Feb 88 11:54:55 GMT
References: < 1238@titcce.cc.titech.JUNET>  < 193@soumd4.soum.JUNET>  < 985@cskvax.csk.JUNET> 
Reply-To: yosikazu@srava.JUNET (Yoshikazu Hayashi)
Distribution: fj
Organization: Software Research Associates, Inc., Japan
Lines: 246
Xref: titcca fj.lang.misc:139 fj.kanji:314

ちょいと日本語Cシェルのシンタクスを考えてみました。御用とお急ぎでない方
は見ていただけませんか。なに、テーブルがだらだら続いているだけで、本分は
長くありませんから。

わたしは日本語もどきのプログラミング言語があってもいいじゃないかと考える
一人ですが、それはあくまで可読性が理由でです。ですからやみくもに既成言語
の単語だけ日本語にしたものは良いとは思いません。
また、可読性のみが関心事ですので、入力時には、(わたしの例の場合)、普通
のCシェルを書いていけば良いと思います。

そこで、Cシェルのスクリプトを「日本語シェル」のスクリプトに直すプログラ
ムと、その逆の変換を行なうプログラムがあれば、とりあえずわたしの考えは
試してみられる、と考えて、以下のような変換表を作ってみました。中にはかな
り冗談っぽいのや、構文解析がつらそうなものもありますが、試してみたかった
ことは、簡単な仕掛けで、日本語入力の煩わしさに付き合うことなく、可読性を
上げることができるか、ということです。どれぐらい読みやすい/にくいか、ご
批判いただければ幸いです。

変換表の後ろに、その変換にしたがったスクリプトの例を付けてあります。

なお、実際の変換プログラムはまだ作っていません(情けない)。

* * * 変換表 * * *

コマンド:

alias			別名
alias name		name の 別名
alias name wordlist	wordlist を name の 別名で呼ぶ
alloc			割り付け
alloc arg		arg の 割り付け
bg			裏にまわす
bg %job ...		%job ... を 裏にまわす
break			ループを抜ける
breaksw			抜ける
cd			移る
cd name			name に 移る
chdir			移る
chdir name		name に 移る
continue		続ける
default:		どれでもない:
dirs			ディレクトリ・スタック
echo wordlist		wordlist を こだまする
echo -n wordlist	wordlist を 改行せずに こだまする
eval arg ...		arg ... を 評価する
exec command		command を 実行してしまう
exit			終了する
exit (expre)		(expr) で 終了する
fg			表に出す
fg %job ...		%job ... を 表に出す
foreach name (wordlist)	name	(wordlist) のそれぞれに対して
    ...			    ...
end			終わり
glob wordlist		wordlist を ファイル名展開に使う
goto word		word に 行く
hashstat		ハッシュ統計
history			履歴
history n		n 個前までの 履歴
history -r n		n 個前までの 逆順の 履歴
if (expr) command	(expr) ならば command
if (expr) then		(expr) ならば
    ...			    ...
else if (expr2) then	そうではなく (expr2) ならば
    ...			    ...
else			そうでなければ
    ...			    ...
endif			と実行
jobs			ジョブ
jobs -l			プロセス番号付きの ジョブ
kill %job		%job ... を 切る
kill -sig %job		%job  ... を sig で 切る
kill pid		pid ... を 切る
kill -sig pid		pid  ... を sig で 切る
kill -l			信号リスト
limit			制限
limit resource		resource の 制限
limit resource maximum-use	resource を maximum-use に 制限する
    cputime		CPU時間
    filesize		ファイルの大きさ
    datasize		データの大きさ
    stacksize		スタックの大きさ
    coredumpsize	コア・ダンプの大きさ
login			ログインする
logout			ログアウトする
nice			遅く実行する
nice +number		+number で 遅く実行する
nice command		command を 遅く実行する
nice +number command	command を +number で 遅く実行する
nohup			HUPなしで実行する
nohup command		command を HUPなしで実行する
notify			ジョブの変化を知らせる
notify %job ...		%job ... の ジョブの変化を知らせる
onintr			intr 処理 の 解除をする
onintr -		intr 処理 を しない
onintr label		intr 処理 で label へ 行く
popd			ディレクトリ を ポップする
popd +n			+n 番目のディレクトリ を ポップする
pushd			現在ディレクトリ を プッシュして \
			先頭ディレクトリ を ポップする
pushd name		name ディレクトリ を プッシュする
pushd +n		+n 番目の ディレクトリ と 位置交換する
rehash			再ハッシュする
repeat count command	command を count 回 繰り返す
set			設定
set name ...		name ... を 設定する
set name=word ...	name=word ...を 設定する
set name = word		name に word を 設定する
set name[index]=word ...	name[index]=word ... を 設定する
set name=(wordlist)	name=(wordlist) を 設定する
setenv name value	name を value に 環境設定する
shift			ずらす
shift variable		variable を ずらす
source name		name を 読み込む
source -h name		name を 履歴表に 読み込む
stop			止める
stop %job ...		%job ... を 止める
suspend			一旦休む
switch (string)		(string) が
case strl:		strl の 際:
	...			...
    breaksw		    抜ける
...			...
default:		どれでもない:
	...			...
    breaksw		    抜ける
endsw			と実行する
time			時間を計る
time command		command の 時間を計る
umask			Uマスク
umask value		value に Uマスクを設定する
unalias pattern		patten の 別名を解除する
unhash			ハッシュを解除する
unlimit resource	resource の 制限を解除する
unlimit			制限を解除する
unset pattern		pattern の 設定を解除する
unsetenv pattern	pattern の 環境設定を解除する
wait			待つ
while (expr)		(expr) の間
    ...			    ...
end			終わり
%job			%job
%job & 			%job & 
@			設定
@ name = expr		name に expr の 値を設定する
@ name[index] = expr	name[index] に expr の 値を設定する

変数:

argv			引数
cdpath			移動路
cwd			現在ディレクトリ
echo			こだま
histchars		履歴用文字
history			履歴
home			本拠地
ignoreeof		EOF無視
mail			郵便箱
noclobber		ぶち壊しなし
noglob			ファイル名展開なし
nonomatch		合致せずなし
notify			ジョブ変化の告知
path			探索路
prompt			入力促進
savehist		履歴貯蔵
shell			シェル
status			状態
term			端末
time			時間
user			使用者
verbose			多弁

* * * スクリプトの例 * * *

022 に Uマスクを設定する
ファイル名展開なし を 設定する
~/.envset を 読み込む
移る
告知 を 設定する
myname を `whoami` に 環境設定する
VECFONT を /usr/new/lib/X/font/vsfont32 に 環境設定する
DISPLAY を unix:0 に 環境設定する
JSERVER を sranantara に 環境設定する
郵便箱 を (/usr/spool/mail/$myname ~/.mail/pobox) に 設定する
コア・ダンプの大きさ を 0 に 制限する
EOF無視 を 設定する
'cd \!*; /bin/ls -F' を cdl の 別名で呼ぶ
'~/lib/alcmds を 読み込む' を src の 別名で呼ぶ
( ( ! $?login ) & &  $?端末 ) ならば
	使用者 を $myname に 設定する
 	~/.login を 読み込む
と実行
biff	y
#
HUPなしで実行する
( $?login ) ならば END へ 行く
login を 設定する
hn を `hostname` に 設定する
START:
( $端末 ) が
   su の場合:
	" Terminal type? "  を 改行せずに こだまする
	端末 を $<  に 設定する
	START に 行く
   news の場合:
   egterm の場合:
	stty	new crt erase  intr  mskanji -even -odd
	TTYPE を mskanji に 環境設定する
	入力促進 を " $hn [\!] "  に 設定する
	抜ける
   d0 の場合:
	stty	new crt erase  intr 
	( `tty` == " /dev/tty51"  ) ならば
		入力促進 を " ${hn}: MacVt [\!] "  に 設定する
	そうでなければ
		入力促進 を " ${hn}:elizabeth [\!] "  \
		に 設定する
	と実行
	可視ベル を 設定する
	抜ける
   どれでもない:
	" Sorry, I don't recognize your terminal type."  を こだまする
	抜ける
と実行する
tset -k
( `tty` == /dev/console ) ならば
	XWSTART	を first に 環境設定する
	xinit =80x8+0-0 -C -fn 6x10 -n console を 実行してしまう
そうではなく ($?XWSTART) ならば
	( $XWSTART == first ) ならば
		~/.xset を 読み込む
	そうでなければ
		XWSTART	を third に 環境設定する
	と実行
と実行
clear
終了する
#
END:
( 0 ) で 終了する;

* * * * * *

おそまつでした。
-- 
よしかず@sra
yosikazu@srava.sra.junet
Next
Continue