CF Pascal, : , , BEGIN, WRITE, READ .
: .
IF WHILE, . CF Pascal , , . Box- .
.
. , .
Box- , . , . :
Ch1:= Ch2;
, , . , .
, Ch2B, Ch2 B. , W, CHAR, W s W(s).
W = {<s, s(W)>}
:
Ch ({INPUT <, , R>, OUTPUT <, , W>,ChF, V1C})
= {INPUT <, , R>, OUTPUT <, , W>,ChF, V1C}(Ch)
= F
, . , , .
A (s) = A
B (s) = B
..
V E :
V:= E = {<s, t>: t = (s {<V, c >: c - }) È {<V, E (s)>}}
V , .
V1 V2 , A, :
V1:= V2 ={<s, t>: t = t s V1 (t) = V2(s)}
V1:= A ={<s, t>: t = t s V1 (t) = A}
:
V1:= B ({V1A, }) = {V1B, }
V2:= V1 ({V1A, V2B,}) = {V1A, V2A, }
V1:= V2 ({V1?, V2A,}) = {V1A, V2A, }
V1:= V2 ({V1A, V2?,}) = {V1?, V2?, }
.
|
|
.
, . I. :
= I = {<s, s>}
BEGIN
BEGIN , . ,
BEGIN
END
.
BEGIN . S , T , ..
BEGIN S END = S
BEGIN S; T END = S ◦ BEGIN T END
:
BEGIN V1:= V2; V2:= V3 END
= V1:= V2 ◦ BEGIN V2:= V3 END
BEGIN V1:= V2; V2:= V3; V3:= V4 END
= V1:= V2 ◦ BEGIN V2:= V3; V3:= V4 END
= V1:= V2 ◦ V2:= V3 ◦ V3:= V4
BEGIN . :
BEGIN V1:= A; V2:= B END ({V1H, V2K,})
= V1:= A ◦ V2:= B ({V1H, V2K,}) (1)
= V2:= B (V1:= A({V1H, V2K,})) (2)
= V2:= B ({V1A, V2K,})) (3)
= {V1A, V2B,} (4)
1 BEGIN . 2 . 3 , 4 .
BEGIN . :
BEGIN V1:= A; V1:= B END ({V1H, V2K,})
= V1:= A ◦ V1:= B ({V1H, V2K,})
= V1:= B ({V1A, V2K,}))
= {V1B, V2K,}
V1, V2 V2, V3 :
BEGIN V1:= V2; V2:= V3; V3:= V1 END ({V1X, V2Y, V3Z, })
= V1:= V2 ◦ V2:= V3 ◦ V3:= V1 ({V1X, V2Y, V3Z, })
= V2:= V3 ◦ V3:= V1 ({V1Y, V2Y, V3Z, })
= V3:= V1 ({V1Y, V2Z, V3Z, })
= {V1Y, V2Z, V3Y, }
WRITE.
3- READ WRITE 5.2.2. .
f , c .
REWRITE(f) = {<s, t>: t = (s {<f, u>: u 3-}) È {<f, <, , W>>}}
WRITE(f, e) = {<s, t>: s(f) =< x, , W>, x ,
t = (s {<f, u>: u 3-}) È {<f, <xÑe(s), , W>>} }
WRITELN(f) = {<s, t>: s(f) =< x, , W>, x ,
|
|
t = (s {<f, u>: u 3-}) È {<f, <xÑ /, , W>>} }
, OUTPUT WRITE WRITELN. :
WRITELN = {<s, t>: s(OUTPUT) =< x, , W>, x ,
t = (s {<OUTPUT, u>: u 3-}) È {<OUTPUT, <xÑ /, , W>>} }
:
REWRITE(F1) ({F1<AXB, , W>, }) = {F1<, , W>, }
WRITE(F1, Ch) ({F1<AB, , W>, ChC,}) = {F1<ABC, , W>, ChC,}
WRITELN ({OUTPUT<Line1, , W>, }) = {OUTPUT<Line1/, , W>, }
WRITE, , :
WRITE(Ch, A) = WRITE(Ch) ◦ WRITE(A)
WRITE(AB) = WRITE(A) ◦ WRITE(B)
WRITELN(F1, Ch) = WRITE(F1, Ch) ◦ WRITELN(F1)
PROGRAM WriteHello (INPUT, OUTPUT);
VAR
LetterL: CHAR;
BEGIN
LetterL:= L;
WRITELN(H, E, LetterL, LetterL, O)
END.
1- <ABC>
PROGRAM WriteHello END. (<ABC>)
= (PROGRAM ◦ VAR BEGIN END. ◦.)(<ABC>)
= VAR BEGIN END. ◦.)({INPUT <, ABC/, R>, OUTPUT <, , W>})
= VAR ◦ BEGIN END. ◦ VAR T ◦.
({INPUT <, ABC/, R>, OUTPUT <, , W>})
= BEGIN END. ◦ VAR T ◦.
({INPUT <, ABC/, R>, OUTPUT <, , W>, Letter?})
= (LetterL:= L ◦ WRITELN(H, E, LetterL, LetterL, O) ◦ VAR T ◦.)({INPUT <, ABC/, R>, OUTPUT <, , W>, Letter?})
= WRITELN(H, E, LetterL, LetterL, O) ◦ VAR T ◦.)
({INPUT <, ABC/, R>, OUTPUT <, , W>, LetterL})
= (VAR T ◦.)({INPUT <, ABC/, R>, OUTPUT <HELLO, , W>, LetterL})
= (.)({INPUT <, ABC/, R>, OUTPUT <HELLO, , W>})
= <HELLO>
,
PROGRAM WriteHello END. (<ABC>)= <HELLO>
READ
, READ, 5.2.2 . f , c , :
RESET(f) = {<s, t>: s(f) = <x, y, R>, x y ,
t = (s {<f, u>: u 3-}) È {<f, <, x&y, R>>}}
READ(f, c) = {<s, t>: s(f) = <x, y, R>, x y , y ¹
t = ((s {<f, u>: u 3-}) {<c, v>: v })
È {<f, <xÑ(Θ y), Λ y, R>>}
È {<c, Θ y >: Θ y ¹ /} È {<c, □>: Θ y = /}}
READLN(f) = {<s, t>: s(f) = <x, y, R>, x y , y ¹
y = (j Ñ / & k, / j,
t = (s {<f, u>: u 3-}) È {<f, <x & (j Ñ /), k, R>>}}
, INPUT READ READLN. :
READ(c) = {<s, t>: s(INPUT) = <x, y, R>, x y , y ¹
t = ((s {<INPUT, u>: u 3-}) {<c, v>: v })
È {<INPUT, <xÑ(Θ y), Λ y, R>>}
È {<c, Θ y >: Θ y ¹ /} È {<c, □>: Θ y = /}}
:
RESET(F1) ({F1<AB,CD/,R>,}) = {F1<ABCD/,, R>, }
READ(F1, Ch) ({F1<AB,CD/,R>, ChQ,}) = {F1<ABC, D/,R>, ChC,}
READLN ({INPUT<AB,CD/,R>,}) = {INPUT<ABCD/, ,R>,}
READ :
|
|
READ (Ch1, Ch2) = READ (Ch1) ◦ READ (Ch2)
READLN(Ch) = READ (Ch) ◦ READLN
:
PROGRAM Change2 (INPUT, OUTPUT);
VAR
C2:CHAR;
BEGIN
READ(C2);
WRITE(C2);
READ(C2);
WRITELN(2);
END.
PROGRAM Change2 END. (<ABC>) , WriteHello .
PROGRAM Change2 END. (<ABC>) =
(PROGRAM Change2 ◦ VAR ◦ BEGIN END ◦ VAR T ◦.) (<ABC>)
= (BEGIN END ◦ VAR T ◦.)
({INPUT<, ABC/, R>, OUTPUT<, , W>, C2?)
= (READ(C2) ◦ WRITE(C2) ◦ READ(C2) ◦ WRITELN(2) ◦ VAR T ◦.)
({INPUT<, ABC/, R>, OUTPUT<, , W>, C2?)
= (WRITE(C2) ◦ READ(C2) ◦ WRITELN(2) ◦ VAR T ◦.)
({INPUT<A, BC/, R>, OUTPUT<, , W>, C2A)
= (READ(C2) ◦ WRITELN(2) ◦ VAR T ◦.)
({INPUT<A, BC/, R>, OUTPUT<A, , W>, C2A)
= (WRITELN(2) ◦ VAR T ◦.)
({INPUT<AB, C/, R>, OUTPUT<A, , W>, C2B)
= (VAR T ◦.) ({INPUT<AB, C/, R>, OUTPUT<A2, , W>, C2B)
=. ({INPUT<AB, C/, R>, OUTPUT<A2, , W>)
= <A2>
, PROGRAM Change2 END. (<ABC>) = <A2>
.
. . , . :
PROGRAM SimpleProc (INPUT, OUTPUT);
PROCEDURE Demo;
BEGIN
WRITELN(Invoked);
END;
BEGIN
Demo;
END.
<Demo, BEGIN WRITELN(Invoked) END> . :
Demo = BEGIN WRITELN(Invoked) END
. N , :
N = {s, s(N)(s)}