+++ /dev/null
-TOKEN START
- RPUSH
- LD GR3,=-1 ; 単語の処理中を示すフラグの初期化
- ; 0: 数字だけの単語を処理中である。
- ; 1: 英字を含む単語を処理中である。
- ; -1: 単語の処理中ではない。
- LAD GR1,-1,GR1
-LP LAD GR1,1,GR1
- LD GR4,0,GR1 ; 1文字を取り出す。
- CPL GR4,='.' ; 終了判定
- JZE FIN
- CPL GR4,=' '
- JNZ ALNUM
- CALL SETTKN
- JUMP LP
-ALNUM LD GR3,GR3 ; 単語の処理中?
- JPL LP ; 英字を含む単語を処理中ならLPヘ
- JZE ACHK ; 数字だけの単語を処理中ならACHKヘ
- LD GR3,=0
- LD GR6,GR1 ; 単語の先頭アドレスを退避
-ACHK CPL GR4,='A' ; 検査対象文字は数字?
- JMI LP ; 数字の場合,次の文字の取出しヘ
- LD GR3,=1 ; 英字の場合
- JUMP LP
-;
-FIN CALL SETTKN
- LD GR5,=-1
- ST GR5,0,GR2 ; 終了マークを格納
- RPOP
- RET
-;
-SETTKN LD GR3,GR3 ; 単語の処理中?
- JMI FIN2 ; 処理中でなければ何もしない。
- ST GR6,0,GR2 ; 単語の先頭アドレスを管理テーブルに格納
- LD GR5,GR1
- SUBL GR5,GR6 ; 単語の長さを計算
- ST GR5,1,GR2 ; 単語の長さを格納
- ST GR3,2,GR2 ; 単語の属性を格納
- LD GR3,=-1 ; 単語の処理中状態を解除
- LAD GR2,3,GR2
-FIN2 RET
- END