付録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つの空白を使用します。 あなたは何を選んでも構いませんが、一貫性を保ってください。 |