アセンブラファイルとテストの整理
[YACASL2.git] / as / FE_TESTS / 2008_04 / Q09 / token.casl
1 TOKEN   START
2         RPUSH
3         LD      GR3,=-1        ; 単語の処理中を示すフラグの初期化
4                                ;  0: 数字だけの単語を処理中である。
5                                ;  1: 英字を含む単語を処理中である。
6                                ; -1: 単語の処理中ではない。
7         LAD     GR1,-1,GR1
8 LP      LAD     GR1,1,GR1
9         LD      GR4,0,GR1      ; 1文字を取り出す。
10         CPL     GR4,='.'       ; 終了判定
11         JZE     FIN 
12         CPL     GR4,=' '
13         JNZ     ALNUM
14         CALL    SETTKN
15         JUMP    LP
16 ALNUM   LD      GR3,GR3        ; 単語の処理中?
17         JPL     LP             ;   英字を含む単語を処理中ならLPヘ
18         JZE     ACHK           ;   数字だけの単語を処理中ならACHKヘ
19         LD      GR3,=0
20         LD      GR6,GR1        ; 単語の先頭アドレスを退避
21 ACHK    CPL     GR4,='A'       ; 検査対象文字は数字?
22         JMI     LP             ;   数字の場合,次の文字の取出しヘ
23         LD      GR3,=1         ;   英字の場合
24         JUMP    LP
25 ;
26 FIN     CALL    SETTKN
27         LD      GR5,=-1
28         ST      GR5,0,GR2      ; 終了マークを格納
29         RPOP
30         RET
31 ;
32 SETTKN  LD      GR3,GR3        ; 単語の処理中?
33         JMI     FIN2           ;   処理中でなければ何もしない。
34         ST      GR6,0,GR2      ; 単語の先頭アドレスを管理テーブルに格納
35         LD      GR5,GR1
36         SUBL    GR5,GR6        ; 単語の長さを計算
37         ST      GR5,1,GR2      ; 単語の長さを格納
38         ST      GR3,2,GR2      ; 単語の属性を格納
39         LD      GR3,=-1        ; 単語の処理中状態を解除
40         LAD     GR2,3,GR2 
41 FIN2    RET
42         END