付録E Forthスタイル規則の要約¶
この付録の内容はパブリックドメインです。 あなたが出典をクレジットするならば、私たちは制限なしに出版を奨励します。
スタックコメントの略語¶
n | 1倍長 符号付整数 |
d | 2倍長 符号付整数 |
u | 1倍長 符号無整数 |
ud | 2倍長 符号無整数 |
t | 3倍長(triple) |
q | 4倍長(quadruple) |
c | 7ビット キャラクタ値(訳注:ASCII表示文字の範囲) |
b | 8ビット バイト値 |
? | ブーリアンフラグ。左記または以下、 |
t= | true |
f= | false |
a or adr | アドレス |
acf | コードフィールドのアドレス |
apf | パラメータフィールドのアドレス |
` | ((英語では)プレフィックスとして) …のアドレス |
s d | (ペアで使って)元(source)、先(destination) |
lo hi | 下限(lower-limit)、上限(upper-limit) (内包) |
# | カウント。 |
o | オフセット |
i | インデックス |
m | マスク |
x | 詳細を気にしない何か(データ構造記法) |
「オフセット」とは、バイトなどの絶対単位で表される差です。
「インデックス」とは、要素やレコードなどの論理単位で表される違いです。
入力ストリームのコメント凡例¶
c | 空白で区切られた単一文字 |
name | 空白で区切られた文字の連なり |
text | 空白以外で区切られた文字の連なり |
実際の区切り文字をtextの後に続けます。 例: text" または text)
良いコメントスタイルの例¶
以下は、優れたコメントスタイルを説明するための2つのスクリーン例です。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 | \ Formatter Data Structures -- p.2 06/06/83
6 CONSTANT TMARGIN \ line# where body of text begins
55 CONSTANT BMARGIN \ line# where body of text ends
CREATE HEADER 82 ALLOT
\ { 1left-ent | 1right-cnt | 80header }
CREATE FOOTER 82 ALLOT
\ { 1left-cnt | 1right-ent | 80footer }
VARIABLE ACROSS \ formatter's current horizontal position
VARIABLE DOWNWARD \ formatter's current vertical position
VARIABLE LEFT \ current primary left margin
VARIABLE WALL \ current primary right margin
VARIABLE WALL-WAS \ WALL when curr. line started being formt'd
|
0 1 2 3 4 5 6 7 8 | \ Formatter positioning -- p.1 06/06/83
: SKIP ( n) ACROSS +! ;
: NEWLEFT \ reset left margin
LEFT @ PERMANENT @ + TEMPORARY @ + ACROSS ! ;
: \LINE \ begin new line
DOOR CR' 1 DOWNWARD +! NEWLEFT WALL @ WALL-WAS ! ;
: AT-TOP? ( -- t=at-top) TMARGIN DOWNWARD @ = ;
: >TMARGIN \ move from crease to TMARGIN
O DOWNWARD ! BEGIN \LINE AT-TOP? UNTIL ;
|
命名規則¶
意味 | 形式 | 例 |
---|---|---|
算術関係 | ||
整数の1 | 1name | 1+ |
整数の2 | 2name | 2* |
増分入力パラメータを取る | +name | +DRAW |
乗算入力パラメータを取る | *name | *DRAW |
コンパイル時 | ||
高レベル定義コードの開始 | name: | CASE: |
高レベル定義コードの終了 | ;name | ;CODE |
何かを辞書(dictionary)に書き込む | name, | C, |
コンパイル時に実行される(訳注: IMMEDIATE) | [name] | [COMPILE] |
ほんの少し違う | name' (prime) | CR' |
何かの内部処理またはプリミティブ | (name)
または <name>
|
(TYPE)
<TYPE>
|
コンパイルワードの実行時部分: | ||
括弧で囲んでない時 | 小文字 | if |
括弧で囲んだ時 | (NAME) | (IF) |
定義ワード | :name | :COLOR |
オーバーレイが始まる場所のブロック番号 | namING | DISKING |
データ構造 | ||
表または配列 | names | EMPLOYEES |
要素の総数 | #name | #EMPLOYEES |
現在の項目番号(添字番号)(変数) | name# | EMPLOYEE# |
現在の項目をセットする | ( n) name | 13 EMPLOYEE |
次の要素へ進める | +name | +EMPLOYEE |
構造体の先頭から
アイテムまでのオフセット
|
name+ | DATE+ |
サイズ(バイト単位)
(BYTES÷nameの1倍長数)
|
/name | /EMPLOYEE |
インデックスポインタ | >name | >IN |
構造体のアドレスから
アイテムのアドレスに変換
|
>name | >BODY |
ファイルインデックス | (name) | (PEOPLE) |
ファイルポインタ | -name | -JOB |
構造体初期化 | 0name | 0RECORD |
方向、変換 | ||
後方へ | name< | SLIDE< |
前方へ | name> | CMOVE> |
何々から(from) | <name | <TAPE |
何々へ(to) | >name | >TAPE |
何々へ変換 | name>name | FEET>METERS |
下方へ(downward) | \name | \LINE |
上方向へ(upward) | /name | /LINE |
開く(open) | {name | {FILE |
クローズ(close) | }name | }FILE |
ロジック、制御 | ||
ブール値を返す | name? | SHORT? |
負論理のブール値を返す | -name? | -SHORT? |
ブール値を格納したアドレスを指す | 'name? | 'SHORT? |
条件によっては当該の動作 | ?name | ?DUP
(maybe DUP)
|
許可(enable) | +name | +CLOCK |
または記号無し版 | name | BLINKING |
禁止(disable) | -name | -CLOCK
-BLINKING
|
メモリ | ||
値を保存(save value of) | @name | @CURSOR |
値を復元(restore value of) | !name | !CURSOR |
nameに格納 | name! | SECONDS! |
nameから取得 | name@ | INDEX@ |
バッファーの名前 | :name | :INSERT |
名前のアドレス | 'name | 'S |
名前を指し示すアドレス | 'name | 'TYPE |
交換、特別なバイト達 | >name< | >MOVE< |
数値型 | ||
バイト長 | Cname | C@ |
2セルサイズ、2コンポーネント
の符号付き整数
|
Dname | D+ |
16bit(1cell)と32bit(2cell)混在演算 | Mname | M* |
3セルサイズ | Tname | T* |
4 cell size | Qname | Q* |
符号なし整数 | Uname | U. |
出力、印刷 | ||
項目を出力 | .name | .S |
数値を出力(名前は型を表す) | name. | D. , U. |
右詰めで出力 | name.R | U.R |
数量 | ||
割った(割合) | /name | /SIDE |
シーケンス(連なり) | ||
開始 | <name | <# |
終了 | name> | #> |
テキスト | ||
(ワード区切の空白に続いて)文字列が続き " で終端する |
name" | ABORT" text" |
テキストまたは文字列演算子
(BASICの$プレフィックスに似ています)
|
"name | "COMPARE |
超文字列(superstring)配列 | "name" | "COLORS" |
記号の発音
! | ストア(store;格納) |
@ | フェッチ(fetch;取得) |
# | シャープ(sharp)、または #RECORDS 等における ナンバー(number) |
$ | ドル(dollar) |
% | パーセント(percent) |
^ | カレット(caret) |
& | アンバサンド(ampersand) |
* | スター(star)(訳注:日本ではアスタリスク) |
( | 左パーレン(left paren; paren)(訳注:丸括弧) |
) | 右パーレン(right paren; paren)(訳注:丸括弧) |
- | ダッシュ(dash)、(マイナス記号から類推して)ノット(not) |
+ | プラス(plus) |
= | イコール(equals) |
{ } | ブレース(braces)(訳注:波括弧) |
[ ] | スクエアブラケット(square brackets)(訳注:角括弧) |
` | クォート(quote) |
' | プレフィックスとしてティック(tick)、サフィックスとしてプライム(prime) |
~ | チルダ(tilde) |
| | バー(bar) |
\ | バックスラッシュ(アンダー(under)、ダウン(down)、スキップ(skip)とも言う) |
/ | スラッシュ(slash)、またはアップ(up) |
< | 未満 |
左矢印 | |
> | よりおおきい(等号含まず) |
右矢印 | |
? | クエスチョン(question) (しばしば クエリー(query) の方が好ましい) |
, | コンマ(comma) |
. | ドット(dot) |
脚注
[1] | (1, 2) よく見られる代替手段では、名前とコメントの間に1空白、コメントと定義の間に3空白が必要です。 より自由な手法では、コメントの前後に3つの空白を使用します。 あなたは何を選んでも構いませんが、一貫性を保ってください。 |