SPL parsing, Textbook Example


Peterson's Mutual Exclusion


local y1, y2 : bool where y1 = false, y2 = false
local      s : [1..2]

P1:: [
    l0: while (true) do [
        l1: noncritical;
        l2: (y1, s) := (true, 1);
        l3: await (!y2 \/ s = 2);
        l4: critical;
        l5: y1 := false
    ]
]

||

P2:: [
    m0: while (true) do [
        m1: noncritical;
        m2: (y2, s) := (true, 2);
        m3: await (!y1 \/ s = 1);
        m4: critical;
    	m5: y2 := false	
    ]
]


step-comments@CS.Stanford.EDU