MPL Bytecode Compiler Code
Micro Programming Language - A Portable Language for Micro Computers
Status: Beta
Brought to you by:
buzzphp
##LIBDYN,LIBCHR,LIBMEM STRCPY=.SCPY. STRCAT=.SADD. STRFIX=.SFIX. STRMID=.SMID. STRDEL=.SDEL. STRINS=.SINS. STRLEN(S)%S STRREV(S)MEMREV(S+1,%S)-1 STRDUP(S)STRCPY(MALLOC(%S+1),S) STRUPR(D,S)MEMMOD(D+1,S+1,%D=%S,TOUPPER)-1 STRLWR(D,S)MEMMOD(D+1,S+1,%D=%S,TOLOWER)-1 /* STRMID(D,S,SS,L) MEMMOVE(D+1,S+SS,%STRFIX(D,.IMIN(L,%S-SS+1)))-1 STRDEL(D,DD,L) [MEMMOVE(D+DD,D+DD+L,%STRFIX(D,%D-L)-DD+1);D] STRINS(D,S,I) [ MEMMOVE(D+I+%S,D+I,%D-I+1); MEMCPY(D+I,S+1,%S); STRFIX(D,%D+%S) ] */ ITOA(I,S;N)[N=<I?I=-I;%S=0;@[S%(%S+=1)=I\10+'0';I/=10];N?S%(%S+=1)='-';STRREV(S)] VSPRINTF(S,F,P;FF,N%10)[ FF=%S=0;FF<%F@(VAL.=F%++FF)<>'%'?S%(%S+=1)=VAL.:[VAL.=TOUPPER(F%++FF); ?'S'?STRCAT(S,!P):?'C'?S%(%S+=1)=!P:?'I'||?'D'?STRCAT(S,ITOA(!P,N$)): [S%(%S+=1)=VAL.;!P--];!P++];S] SPRINTF(STR,FMT;ARGS!10)VSPRINTF(STR,FMT,ARGS$) STRWHILE(S,SS,IS)[SS<=%S?IS(S%SS)@++SS;SS] STRUNTIL(S,SS,IS)[SS<=%S?==IS(S%SS)@++SS;SS] STRTOK(D,S,SS,IS;S1,S2)[S2=STRUNTIL(S,S1=STRWHILE(S,SS,IS),IS);STRMID(D,S,S1,S2-S1);S2] STRARG(D,S,SS)STRTOK(D,S,SS,ISSPACE)