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