【正文】
nn=1amp。pc=s1: ([pos],[pos],):=( c,s,+1)amp。pc=s0: (pos,pc):=((+)%QS,s1)。 pos=0。 pos: 0..QS。RETURN。RETURN。RETURN。RETURN。 TRANS FALSE: TRUE。 len=0。 start: 0..QSL。 //loosy channel 進程模塊說明 2(通道 ) MODULE chab() VAR contents[0..QSL]: {ack,red,green,blue}。 start=0。 (for xx in [0..QSL]): seq[xx]=0。 start: 0..QSL。 seq[0..QSL]: 0..ML。 SPEC AG(err!=1)。 pra: mpra()。 cha: chab()。 PROC chr: chrs()。通訊協(xié)議 (例子 ) 通訊協(xié)議 B A 通訊協(xié)議 B A S R 通訊協(xié)議 B A S R 通訊協(xié)議 B cha A S R chb chr chs 通訊協(xié)議 prb cha pra pss prr chb chr chs obuf[] busy[] s q ibuf[] recv[] m p M W QS 通訊協(xié)議模型 (主程序 ) VVM ft001 DEFINE QS=2 QSL=1 M=4 ML=3 W=2 WL=1 rr=0 ss=1 aa=2 bb=3 VAR err: 0..1。 INIT err=0。 chs: chrs()。 chb: chab()。 prb: mprb()。 進程模塊說明 1(通道 ) MODULE chrs() VAR contents[0..QSL]: {ack,red,green,blue}。 len: 0..QS。 INIT (for xx in [0..QSL]): contents[xx]=0。 len=0。 TRANS len0: (len,start):=(len1,(start+1)%M)。 len: 0..QS。 INIT (for xx in [0..QSL]): conte