Each line you enter will be parsed as a command. > SKIP SKIP > ABORT ABORT > SKIP | ABORT SKIP | ABORT > DO SKIP | ABORT OD DO SKIP | ABORT OD > IF SKIP | ABORT FI IF SKIP | ABORT FI > SAVE Foo IN SKIP | ABORT END SAVE Foo IN SKIP | ABORT END > { SKIP | ABORT } { SKIP | ABORT } > SKIP ; SKIP SKIP; SKIP > SKIP ; SKIP ; SKIP SKIP; SKIP; SKIP > SKIP ; SKIP | ABORT ; ABORT SKIP; SKIP | ABORT; ABORT > NOT FALSE AND TRUE -> SKIP NOT FALSE AND TRUE -> SKIP > IF NOT FALSE AND TRUE -> SKIP FI IF NOT FALSE AND TRUE -> SKIP FI > x < y -> SKIP ; SKIP x < y -> SKIP; SKIP > x < y -> SKIP | FALSE -> SKIP; SKIP x < y -> SKIP | FALSE -> SKIP; SKIP > x < y -> SKIP ; SKIP | ABORT x < y -> SKIP; SKIP | ABORT > x < y -> SKIP ; { SKIP | ABORT } x < y -> SKIP; { SKIP | ABORT } > x < y -> { SKIP ; SKIP | ABORT } x < y -> { SKIP; SKIP | ABORT } > { x < y -> SKIP } ; SKIP | ABORT { x < y -> SKIP }; SKIP | ABORT > VAR z IN SKIP ; x < y -> SKIP ; SKIP END | ABORT VAR z IN SKIP; x < y -> SKIP; SKIP END | ABORT > x < y -> VAR z IN z = x -> SKIP ; SKIP END | ABORT x < y -> VAR z IN z = x -> SKIP; SKIP END | ABORT > x, y.z := 2, "Text" x, y.z := 2, "Text" > x, y := (z, w):Foo.P(s, t) x, y := (z, w):Foo.P(s, t) > VAR x, y, z IN SKIP END VAR x, y, z IN SKIP END > VAR x, y, z IN VAR u, v IN SKIP END END VAR x, y, z IN VAR u, v IN SKIP END END > VAR x, y ~ 3, z IN u, v := 2, t END VAR x, y ~ 3, z IN u, v := 2, t END > Foo.P(3, x) Foo.P(3, x) > x.y:Foo.P(3, x) x.y:Foo.P(3, x) > x.y:Foo.P(3, x) ; SKIP x.y:Foo.P(3, x); SKIP > Foo.P(); Bar.P(); SKIP Foo.P(); Bar.P(); SKIP > x.y:Foo.P(3, x) -> SKIP x.y:Foo.P(3, x) -> SKIP > x * y + z < 3 -> SKIP x * y + z < 3 -> SKIP > x REL (a, b) = (0, 0) AND Bar(x) -> SKIP x REL (a, b) = (0, 0) AND Bar(x) -> SKIP > Bar(x) AND x REL (a, b) = (0, 0) -> SKIP Bar(x) AND x REL (a, b) = (0, 0) -> SKIP > x = FALSE -> SKIP x = FALSE -> SKIP > IF x = FALSE -> SKIP FI IF x = FALSE -> SKIP FI > ^D