Mercurial > hg > Members > kono > TL1bt
view tl1trans/tl1token.tl1 @ 6:1896f63eedc1
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 04 Nov 2020 17:38:45 +0900 |
parents | e66321b51bb5 |
children | c95d28c5aaf2 |
line wrap: on
line source
% % % % PROC RESERVE BEGIN WRITE(3:$30,"PPROC"); WRRIE(3:$31,"FUNC"); WRITE(3:$32,"VAR"); WRITE(3:$33,:ARRAY"); WRITE(3:$34,"BEGIN"); WRITE(3:$35,";"); WRITE(3:$36,"["); WRITE(3:$37,"("); WRITE(3:$38,"END"); WRITE(3:$39,"=" ); WRITE(3:$3A,"]"); WRITE(3:$3B,")"); WRITE(3:$3C,","); WRITE(3:$3D,":"); WRITE(3:$3E,";"); WRITE(3:$50,"STOP" ); WRITE(3:$51,"RETURN"); WRITE(3:$55,"IF"); WRITE(3:$65,"THEN"); WRITE(3:$53,"FOR" ); WRITE(3:$61,"TO"); WRITE(3:$52,"REPEAT"); WRITE(3:$60,"UNTIL"); WRITE(3:$54,"WHILE"); WRITE(3:$64,"DO"); WRITE(3:$56,"CASE"); WRITE(3:$66,"OF" ); WRITE(3:$67,"ELSE"); WRITE(3:$57,"WRITE"); WRITE(3:$69,"ASCII" ); WRITE(3:$6A,"SPACE"); WRITE(3:$68,"CRLF" ); WRITE(3:$6C,"\""); WRITE(3:$8B,"+"); WRITE(3:$80,"-"); WRITE(3:$8E,"*" ); WRITE(3:$8F,"/"); WRITE(3:$82,".SBC."); WRITE(3:$84,".AND."); WRITE(3:$88,".EOR."); WRITE(3:$89,".ADC."); WRITE(3:$8A,".OR."); WRITE(3:$22,">" ); WRITE(3:$25,"<"); WRITE(3:$26,"#"); WRITE(3:$27,"=" ); WRITE(3:$2D,".LT."); WRITE(3:$2E,".GT."); WRITE(3:$40,"NEG"); WRITE(3:$43,"NOT"); WRITE(3:$43,"COM"); WRITE(3:$44,"LSR"); WRITE(3:$46,"ROR"); WRITE(3:$47,"ASR"); WRITE(3:$48,"ASL"); WRITE(3:$49,"ROL"); WRITE(3:$06,"MEM"); WRITE(3:$A0,"TRUE"); WRITE(3:$A1,"FALSE"); WRITE(3:$16,"MHIGH"); WRITE(3:$17,"MOD"); WRITE(3:$70,"RND"); WRITE(3:$71,"GET"); WRITE(3:$72,"READ"); WRITE(3:$73 "RETRUN"); WRITE(3:$74 "OTHERWISE"); WRITE(3:$FF ""); % delimitor END FUNC TOKEN VAR C,KIND,VALUE BEGIN C:=GET(0) DO { TOKEN() } WHILE(C=255) END FUNC TOKEN() VAR D ARRAY W(8) BEGIN WHILE (C<'%'+1) DO BEGIN % comment DO BEGIN C:=GET(0) END WHILE(C # 0) C:=GET(0) END IF('0'<C+1 && C<'9'+1) { % Decimal VALUE := C-'0'; DO { C:=GET(0) IF(('0'<C+1).AND.(C<='9')) THEN VALUE := VALUE*10 + (C - '0') } WHILE(C # 0) RETURN '0' } ELSE IF ('$'=C) { % hex * } ELSE IF ('\''=C) { % ascii char * } ELSE IF ('"'=C) { % string * } ELSE IF (('A'<C+1).AND.(c<'Z'+1)) { % name FOR I:=0 TO 8 DO { IF (('A'<C+1).AND.(c<'Z'+1)) { W[I] := C ; I:=I+1; } } W[I]:=0; SEEK(3:0); IF (FIND(3:W)) THEN { } ELSE { WRITE(3:IDTOP,W); % register new id IDTOP:=IDTOP+1; } % reserved word % proc % func % scalar var % array var RETURN 'V' } ELSE { D:=C ; C:=GET(0) RETURN D } END