You are on page 1of 52

7.

091501

2007

2
,
, , .

__28 __ 2007, N_3_

..., .., ..., ...,


..
: ..., ..

.
1 1.

2 2. 10
3 3. LL(1)

16

4 4.

5. LR(1)

25
30

6 6.

35

41

7.

4
1. 1.
: ,

.
1.1
,
().
.
"" .
.
, ,
, abc,d1,ef2 ,
( 1), : 2 1
314.
1.1

,
abc
d1
ef2

1
2
3
4

.
.
, ,
,
.
( , ) /1/.
,
-

, , :
, , .
, , -
.
"r",
, "i", <>.
"," : r1, "abc", "d1" "ef2", : i2, i3 i4.
.
, , ,
3 /2/. ,
() . ,
: <U>::=<W>N <U>::=N, <U>,<W> , N - ,
/2/:
1) V , ,
( - F), ;
2) T,
;

5
3) P ; <U>::=<W>N
P(W,N)=U, <U>::=N - P(F,N)=U;
4) F;
5) S ,
, ( ).
S ,
. ,
( /3/),
,
.
, G[<S>] :
<S>::=<X>$
<X>::=<U>0|<V>1
<U>::=<X>1|1
<V>::=<X>0|0
, .1
.2 , y1 - ,
, .

U/y0

1
F/y0

X/y0

S/y1

V/y0

.1.1

F

y0

y0

y0

.1.2

y0 y1

6
"-" ,

. E("") - "-" E,
yE,
.
, ..
.
, S ,
F. -
/3/, F S ,
y1.
.3.

1/y0

FS

0/y0

$/y1

1/y0

1v$/yE
$/yE

0v$/y
E

1/y0
V

0/y0

0/y0
. 1.3
/2/ ,
, .
k , , 2*k+2 . - ,
- k.
,
. :
F 2 1 7 0 11 U 1 0 15 V 1 1 15 X 3 0 11 1 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
$ 23 S 0
21 22 23 24
1.2.
1.2.1. ( ).
.

7
1.2.2. .
1.2.3. -
.
().
1.3.
2.
1.2


1
2
3
4
5
6
7
8
9
10

1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18
19
20

1
2
3
4
5
6
7
8
9
20

. - - ,
; - .
.
1) "" , "b";
"" , "";
"b" , "" "".
2) """b" , "b";
"b""" , "";
"".
3) "","b","", "","b","";
"","b","", "","b","".
4) "" "" "b",
"b";
"b", "";
"b", "".
5) "" "b";
"b" ""; "".
6) 0 1 /* */; 01; *.
7) 0 1, "."; 0 1
"."; ".".
8) 0 1; 1
0; 1 .
9) 1 0, ;
0 1, .
10) 1 , 0;
0 1 , ".".

8
1.4.
1) .
2) .
3) .
4) .
5) .
6) .


1.., . . , . .1.
. - .: ,1978. - 612c.
2... . - .: , 1975.
- 544c.
3... . .1. - .: .
- , 1970. 416c.

2. 2.

.
,
.
2.1.
2.1.1. . .

() - ,
, ,
/1/. ,
.
.
G(V,T,P,S) (,
):
1) <S> ::= <E>
2) <E> ::= <T> + <E>
3) <E> ::= <T>
4) <T> ::= <F> * <T>
5) <T> ::= <F>
6) <F> ::= i
i*i+i
(. 1) .
<S>

<E>

<T> +
<E>

<F>* <T>
<T>

i
<F>
<F>

i
i
.2.1.
2.1.2
: G =({a,b,c, }, {S,A,B}, P, S),
P: S
AB
A
a | cA
B
bA
, caba L(G).
:

10
S
AB cAB
caB
cabA
caba
, L(G).

" ":
S

S
A

S
A

A
b

A
c

b
S

b
S

A
c

b
S

B
A

A
b

(-) " ":


, ; -
,
. ,
, ,
, . ,
.

: ,
. ,
, .
:
G = ({a,b,c,}, {S,A,B}, P, S),
P: S
AB
A
a | cA
B
bA
:
#include <stdio.h>

11
int c;
FILE *fp;/ , /
void A();
void B();
void ERROR(); / /
void S() {A(); B();
if (c != ' ') ERROR();
}
void A() {if (c=='a') c = fgetc(fp);
else if (c == 'c') {c = fgetc(fp); A();}
else ERROR();
}
void B() {if (c == 'b') {c = fgetc(fp); A();}
else ERROR();
}
void ERROR() {printf("ERROR !!!\n"); exit(1);}
main() {fp = fopen("data","r");
c = fgetc(fp);
S();
printf("SUCCESS !!!\n"); exit(0);
}
2.1.3
,
:
a)
A , (VT VN)*
;
b)
A
a1 1 | a2 2 | ... | an n, ai VT i = 1,2,...,n; ai aj i j; i
*
(VT VN) , . . ,
, .
, ,
.
, : ,
-,
? , , , ..
.
, .
:
(1) ,
, - (, ,
..).
:
L a | a,L ( L a {,a} )
, ..
.

12
,
a,a ,
L.
(
.

a,a,a,a,a L a,
a,a,a,a,a. , ,
,
),

L :
void L()
{ if (c != 'a') ERROR();
while ((c = fgetc(fp)) == ',')
if ((c = fgetc(fp)) != 'a') ERROR();
}
, , , L,
( - ), L
, L. ,
B - L ,
S LB
L a {, a}
B ,b
, -,
,,,b , .
,
, , .
(2)
, , .. ,
.
a) , , ..

A A 1 | ... | A n | 1 | ... | m,
i (VT VN)+, j (VT VN)*, i = 1, 2, ..., n; j =1, 2 ,..., m,
- .
:
A 1A | ... | mA
A
1A | ... | nA |
, , .. A -
j { i}, i = 1,2,...,n; j = 1,2,...,m.
b) ,
, ..
A
a 1 | a 2 | ... | a n | 1 | ... | m,
a VT; i, j (VT VN)*, - .
,
:
A
aA | 1 | ... | m
A 1 | 2 | ... | n
, .
c) , ,
, , ..
A
B1 1 | ... | Bn n | a1 1 | ... | am m
B1
11 | ... | 1k

13
...
Bn
n1 | ... | np,
Bi VN; aj VT; i, j, ij (VT VN)*,
Bi , A
:
A 11 1 | ... | 1k 1 | ... | n1 n | ... | np n | a1 1 | ... | am m
d) , ..
A a1 1 | ... | an n | ,
( ,
).
, G = ({a,b}, {S,A}, P, S),
P: S
bAa
A aA |
-, , :
void S(void)
{if (c == b) {c = fgetc(fp); A();
if (c != a) ERROR();}
else ERROR();
}
void A(void)
{if (c == a) {c = fgetc(fp); A();}
}
baaa A() ;
, - , S.
, baaa , ,
.
, , , A,
, , .
G = ({a,b,}, {S,A}, P, S),
P: S
bA
A
aA |
.
, - -.
: FIRST(A) - ,
,
G = (VT, VN, P, S), .. FIRST(A) = { a VT | A a , A VN, (VT VN)*}.
: FOLLOW(A) - ,
,
G = (VT, VN, P, S), .. FOLLOW(A) = { a VT | S A , a , A VN, , ,
(VT VN)*}.
, FIRST(A) FOLLOW(A) ,
.

A
B

1A | ... | nA | 1 | ... | m|
A

14
FIRST(A) FOLLOW(A) (- ),
:
A
A 1A | ... | nA | 1 | ... | m |
A 1A | ... | nA | 1 | ... | m|
, .. B -
{ i} j { i} .
A ,
, ,
, .
-.
-,
, , ,
, -
, n cn.

LL(k)-,
LR(k)-,

(., , [2], [3]).


2.2.
2.2.1 ,
.
2.2.2 ,
().
2.3.

. 2.1.
.
(1- PL0, 2- ASPLE).
PL0 ASPLE 1
2.
.
PL0 ASPLE
3 4.
2.1

1
2
3
4
5
6
7
8

11
12
13
14
21
22
23
24

9
10
11
12
13
14
15
16

11
12
13
14
21
22
23
24

- : - , -.

15
2.4.
4.1. .
4.2. .
4.3. .
4.4. .
4.5. .

1. ., .. , . .1.
. - .: , 1978. - 612.
2. .. . - .: , 1984.
- 232.
3. .. . - .: , 1975.- 544 .
4. .., .. .
. ,1998.

16
3. 3.
LL(1) -
: LL(1),

3.1. . .

() - ,
, ,
/1/. ,
.
.
G(V,T,P,S) (,

):
1) <S> ::= <E>
2) <E> ::= <T> + <E>
3) <E> ::= <T>
4) <T> ::= <F> * <T>
5) <T> ::= <F>
6) <F> ::= i
i*i+i
(. 1) .
<S>
<E>
<E>

<T>
<F>

<T>

<F>
i

<T>
<F>
i

.3.1.
, ,
,
.

.

,
,

17
/3/, C
(.3.2).

- C ( );
- , C (0, C );
- ,
, (
);
- .
.3.2.
,
.

, .
.3.

18
.

<E>

<S>,
1

0
0
<T>

<E>,2

<E>

+
0

0
0

<T>
0
0

<F>

<T>,4

<T>

*
0

0
0

<F>
0
0

<F>,6

0
3.3.
,
, . , ,
( 3.1).
3.1
14

i , 13

13

<F>, 12

12

<T>, 5

19
11

i , 10

10

<F>, 8

i,6

<T>, 3

*, 3

<F>, 3

<E>, 2

*, 2

<T>, 2

<E>, 1

<S>, 0


, - .
, ,
() .

- () , .
,
, -,
/1/:
1) LL(k)-, ,
k ,
;
2) LR(k)-, ,
k ,
;
3) ,
,
.


LL(1)-, LR(1)- .

(: , ; : ,
), :
,
. ,
.
, .
( ) (
) :

-

20
.
, .
- ,
, .
, ,
" - ".
( )
,
.
, (LL(k),LR(k) ) ,
, , .
,
- . ,
, .

.
3.2.1 C LL(1)-
LL(K)-
.
G(V,T,P,S) /1/
VUTU$ ($- ), - T U
"lambda"("lambda" - ).
$ S.
3.2.
3.2
N /
1

3
4

""


;
;
i
,


;
;

""

LL(1)- G(V,T,P,S)
/1/.
1. <A>::=r- i , M(<A>,a)=i a (
"lambda"), , r.

21
"lambda", (<A>,b)=i b,
, <A>.
2.M(a,a)="" a, .
3.M($,"lambda")="".
4. "".
.
G(V,T,P,S) LL(1),
<E> ( 2 3) ,
i.
<T>. G(V,T,P,S) G1(V1,T,P1,S),
LL(1). :
1) <S>::=<E> 2) <E>::=<T><X> 3) <X>::=+<E> 4) <T>::=<F><Y>
5) <Y>::=*<T> 6) <F>::=i 7) <X>::="lambda" 8) <Y>::="lambda"

LL(1)- ( 3). 3
i
<S>

<E>

<T>

<F>

<X>

<Y>

i
+

7
5

"".
i*i LL(1)-. ,
, ,
.
4.
3.4

(A,a)

22
<S>,0
$

M(<S>,i)=1

<E>,1
$

M(<E>,i)=2

<T>,2
<X>,2
$

M(<T>,i)=4

<F>,3
<Y>,3
<X>,2
$

M(<F>,i)=6

i,4
<Y>,3
<X>,2
$

M(i,i)=""

<Y>,3
<X>,2
$

M(<Y>,*)=5

*,6
<T>,6
<X>,2
$

M(*,*)=""

<T>,6
<X>,2
$

M(<T>,i)=4

<F>,8
<Y>,8
<X>,2
$

M(<F>,i)=6

i,9
<Y>,8
<X>,2
$

M(i,i)=""

<Y>,8
<X>,2
$

"lambda"

M(<Y>,"lambda")=8

<X>,2
$

"lambda"

M(<X>,"lambda")=7

"lambda"

M($,"lambda"=
""

(.3.4.).

23

<S>
<E>
<T>

<E>

<X>
lambda

<Y>

<T>

< F>

<Y>

lambda

.3.4.
3.5.
3.5
12

<X>,2

11

<Y>,8

10

i,9

<F>,8

<T>,6

*,
6

<Y>,3

i,4

<F>,3

<T>,2

<E>,1

<S>,0

24
3.2.
2.1. LL(1),
.
2.2. .
2.3. ,
().
3.3.

LL(1). 3.6.
.
(1- PL0, 2- ASPLE).
PL0 ASPLE 1
2.
.
PL0 ASPLE
3 4.
3.6

1
2
3
4
5
6
7
8

11
12
13
14
21
22
23
24

9
10
11
12
13
14
15
16

11
12
13
14
21
22
23
24

- : - , -.
3.4.
3.4.1. .
3.4.2. .
3.4.3. .
3.4.4. .
3.4.5. .

1. ., .. , . .1.
. - .: , 1978. - 612.
2. .. . - .: , 1984.
- 232.
3. .. . - .: , 1975.- 544 .

25
4. 4.

: ,

4.1

.
( )
T U V U $ ( -
, - ).
: (,
).
($,0).

4.1.
4.1
N/

<.


"<." - ; ,
n
, n -
.

=.


"=." - ; ,
n
, n -
.

>.

(
w) =.
<. ; <A>::=w ,
<A> .

"

"

, .

- <., =., >. - G(V,T,P,S)


V U T /1/:
1) X<.Y, <A>::=rX<B>q, Y
, <B>;

26
2) X=.Y, <A>::=rXYq;
3) X>.a, a - , <A>::=r<B>Yq , X
, <B>, Y=at, a
, Y.

($). , $<.X X,
, <S>, Y>.$ Y,
.
- G(V,T,P,S) ,
, "lambda"-, T U V
-.
.
.
G(V,T,P,S) .1.1, ,
, <T> =. + 2)
<T> >. + 2) 4). ,
G2(V2,T,P2,S) :
1)
2)
3)
4)
5)
6)
7)

<S>::=<E>
<E>::=<X>+<E>
<E>::=<X>
<T>::=<F>*<T>
<T>::=<F>
<F>::=i
<X>::=<T>
G2 4.2.
4.2
<S>

<S>
<E>
<T>
<F>
<X>
i
+
*
$

<E>

<T>

<F>

<X>

+
>.
>.
=.
>.

=.

=.

$
>.
>.
>.
>.

>.

>.

<.
<.
<.
<.
=.
<.
<.
<.
<.
<.
<.
<.
<.
,
.
,
"", M(<S>,$)="".
i*i .
4.3.
4.3

27

M(A,a)

$,0

M($,i)=<.

i,<.
$,0

M(i,*)=>.

$,0

<F>

M(<F>,$)=<.

<F>,<.
$,0

M(<F>,*)==.

*,=.
<F>,<.
$,0

M(7,i)=<.

i,<.
*,=.
<F>,<.
$,0

M(i,$)=>.

*,=.
<F>,<.
$,0

<F>

M(*,<F>)=<.

<F>,<.
*,=.
<F>,<.
$,0

M(<F>,$)=>.

*,=.
<F>,<.
$,0

<T>

M(*,<T>)==.

<T>,=.
*,=.
<F>,<.
$,0

M(<T>,$)=>.

<T>

M($,<T>)=<.

M(<T>,$)=>.

<X>

M($,<X>)=<.

M(<X>,$)=>.

<E>

M($,<E>)=<.

M(<E>,$)=>.

$,0
<T>,<.
$,0
$,0
<X>,<.
$,0
$,0
<E>,<.
$,0

28
$,0

<S>

<S>,<.
$,0

M($,<S>)=<.
M(<S>,$)=""

(.4.1).

<S>
<E>
<T>

<F>
i

<T>
<F>
i

.4.1.
4.4.
4.4
10

<S>,0

<E>,10

<X>,9

<T>,8

<T>,7

<F>,6

i,5

*,7

<F>,7

i,2

4.2.

29
2.1. ,
.
2.2. .
2.3. ,
().
4.2.1.

. 4.5.
.
(1- PL0, 2- ASPLE).
PL0 ASPLE 1
2.
.
PL0 ASPLE
3 4.
4.5

1
2
3
4
5
6
7
8

11
12
13
14
21
22
23
24

9
10
11
12
13
14
15
16

11
12
13
14
21
22
23
24

- : - , -.
4.3
4.3.1. .
4.3.2. .
4.3.3. .
4.3.4. .
4.3.5. .

1. ., .. , . .1.
. - .: , 1978. - 612.
2. .. . - .: , 1984.
- 232.
3. .. . - .: , 1975.- 544 .
4. .., .. .
. ,1998.

30
5. 5. LR(1)
: LR(1)
,
5.1. LR(1)-
LR(k)-
.
(LR- ) /2/
, , - VUTU$.
: (, ).
($,1).

5.1.
5.1
N /

n (n
i);

i.

("",
j )


j - ;
,
n
.

""

;
.


.
: ,
. ,
,
( . . ).
-
,
.
/2/.
1. k,
- j,
M(k,A) = ("",j).
2. j i (
- "lambda", j

31
,
i), Q , -
i, M(j,q)=i q,
Q.
3. M(1,<S>)="".
4. M "".
.
G(V,T,P,S):
1) <S>::= <E>
1 2
2) <E>::= <T> + <E>
1,4 3 4 5
3) <E>::= <T>
1,4 3
4) <T>::=

<F> * <T>
1,4,7 6 7 8

5) <T>::=

<F>
1,4,7 6

6) <F>::=

1,4,7 9
5.2.
5.2
<S>

1
2
3
4
5
6
7
8
9

<E>
,2

<F>
,6

<T>

1
3

,4
,6

,3

,9

,5
5
,6

,8

,7

2
5

4
6

,9
4
6

"".
i*i c
LR(1) - . 5.3.
5.3

. M(A,a)

$,1

M(1,i)=,9

i,9
$,1

M(9,*)=6

32
$,1

<F>

M(1,<F>)=,6

<F>,6
$,1

M(6,*)=,7

*,7
<F>,6
$,1

M(7,i)=,9

i,9
*,7
<F>,6
$,1

M(9,$)=6

*,7
<F>,6
$,1

<F>

<F>,6
*,7
<F>,6
$,1

M(7,<F>)=,6

M(6,$)=5

*,7
<F>,6
$,1

<T>

<T>,8
*,7
<F>,6
$,1

M(8,$)=4

<T>

M(1,<T>)=,3

M(3,$)=3

<E>

M(1,<E>)=,2

$,1
<T>,3
$,1
$,1
<E>,2
$,1
$,1

$
<S>

M(7,<T>)=,8

M(2,$)=1
M(1,<S>)=

e (.5.1).

33

<S>
<E>
<T>

<F>
i

<T>
<F>
i

.5.1
5.4.
5.4
9

<S>,0

<E>,9

<T>,8

<T>,7

<F>,6

i,5

*,7

<F>,7

i,2

5.2.

LR(1). 5.5.
.
(1- PL0, 2- ASPLE).
PL0 ASPLE 1
2.
.
PL0 ASPLE
3 4.

34

5.5
8

11

12

13

14

21

22

23

24

10

11

12

13

14

15

16

11

12

13

14

21

22

23

24

- : - , -.
5.3.
5.3.1. .
5.3.2. .
5.3.3. .
5.3.4. .
5.3.5. .

1. ., .. , . .1.
. - .: , 1978. - 612.
2. .. . - .: , 1984.
- 232.
3. .. . - .: , 1975.- 544 .

35
6. 6
: ,
.
6.1
,
.
,
,
(1,2,3).
,
. ,
, ,
:
<>< >< 1>< 2>.
<>
:INIT( ), INCR(
), TEST( ) , LOOP( ).
.
i- ,
j- , , ,
, i- j- (1-3).
,
.
1. dep(<>)
0.
2. i- , A ,
dep(A) i.
3. i- dep(Ti) 1+<
>.
:
i- j- (j<i), i-
, dep(i)=dep(j).
.
'
dep A B C D Ti
*
00001
+ D T1
00002
:= D T2
00003
*CB
00031
+ D T4
00034
:= A T5
00035
6003
4 1 dep(T4)=dep(T1)=1.
:
dep(Ti)
*
1
+ D T1
2

36
:= D T2
+ D T1
:= A T4

3
4
5

6.1.1.
,
. ,
, , .
, ,
/1-3/.
6.1.2.
,
/1/.
,
(A,K) A, .
() , - "",
, - .

.
1. -, , .
2. - _ , .
3. , ,
_ , - .
4. :=, :
- -, ( ,
, );
- - , , .
:


:=

:=

:=

:=

9.2

6.2

9.2

:=

T4

:=

9.2


,
(1-3).

37

, 0
, , 1 2
.
0:
1, ,
, .
.

:=

+1
:= 0

1
1

+2

+ 4

:= 5

. 2
, 1-:
+B 1
:= C 0
+ T1 C
+ C T3
:= A T4

, 1,2,
INIT LOOP (1-3).
i1 i2
i1=i2+const.
, ,
, .
1.
INIT := I 1
:= L J
:= K 0
LOOP + L I
:= S T4
+KS
:= K T6
INCR + I 1
:= I T8
TEST = I 1000
JFALSE T4
I ( 1,2,
..1000) S( J+1,J+2,.,J+1000).
,
.

38

, .
.
,
, .
, ,
, ,
.
, , ,
INIT .
.
( ),
, ,
. ,
, , ,
, .
2.
'
INIT := I 1
LOOP + I 1
:
+ T2 2
I,K,S.
:= K T3
-K 3
+ T5 4
:= S T6
I . .
1 2 3 4
I 1,0
1,0
1,0
1,0
K T3,0
T2,2
I,3
I,3
S T6,0
T5,4
K,1
I,4
1, I, S=I+L
.

, :
INIT := I 1
:= L J
:= K 0
LOOP + L I
+ K T4
:= K T5
INCR + I 1
:= I T7
TEST = I 1000
JFALSE T4
+LI
:= S T11
,
S, LOOP, ,
, + L I , I

39
.
S, I :
INIT := L J
:= K 0
+L1
:= S T3
+ S 1000
:= R T5
LOOP + K S
:= K T7
INCR + S 1
:= S T9
TEST = S R
JFALSE T7
6.1.3.
,
/1-3/.
,
, .
()
LOOP- .
, _
"". ,
, ,
.
.
'
INIT := I 1

:= S 0
: A,B.
LOOP + A B
:= K T3
*KI
+ S T5
:= S T6
INCR . . .
,
3 4 "C". LOOP- :
INIT := I 1
:= S 0
+A B
LOOP * T3 I
+ S T4
:= S T5
INCR . . .
6.2.

40
,
. 1
.
6.1.

1 2

10

11

12

_______________________
.
:
1- ;
2- ;
3- ;
4- ;
5- ;
6- ;
- : -, -.
6.3.
6.3.1. .
6.3.2. .
6.3.3. .
6.3.4. .
6.3.5. .

41
7. 7
:
().
7.1
,
, .
.
:
1.
, ()
.
2.
,
.
3. .
, (1) (2):
a+*d/(+)
*+d+/-

(1)
(2)

7.1.1. .
.
[1]. 1960 .
.. [2]. ,
, .

, , ,
.
, , .
, .
.

. .
, .
,
, .
"" , ,
.
.
. ,
"" , .
, .
1, .

. .
.
c
.
1.

42
a+*cd/(+)
.7.1.

a
b

c
*
+
d
a
b

7.1

a
a
a
a
a
a
a
a
a
a
a
a
a
b
b
b
b
b
b
b
b
b
b
b
c
c
c
c
c
c
c
c
c
*
*
*
*
*
*
*
*
+
+
+
+
+
+
+
+
a
d
d
d
d
d
d
a
a
a
a
b
b

+
(

(
/

)

2.
+>-5^z-d=1+q^2
(3)
.2.
7.1.2.

(+[i+1,j])*+d

. [2].
, ,
.
( ) .

43

a
a
b
+
5

>

7.2

a
a
a
a
a
a
a
a
a
a
a
a
a
b
b
b
b
b
b
b
b
b
b
b
b
+
+
+
+
+
+
+
+
+
+
+
5
5
5
5
5
5
5
5
5

>
>
>
>
>
>
>
>
>
z
z
z
z
z
z
z
z
d
d
d
d
d
d
1
1
1
1

a
b
+
5

>
z
d
1
q

q
2

+
=

>

>

>

>

(),
- , - (, )
. [3]
, .1.
+
d

44
+

a
b
+
j
.7.1 ,
, ,
i+j+*d+

(4)

, .

. .
.
:
],
- , , ] -
, .
, n - ,
=n+1
, (4)

i1+j3]+*d+
(5)
, ,
. [ ] ,
. , ,
. ,

.

()
, 2. ,

, .
, ,
- .
1 ,
,
. , ,
. ,
.
. (3).
.7.3.
.3 [ . ,
2. ,
.7.3 (5), .7.1.

45
7.3
,

a
a

]
+
c

3
]

]
+

+
c
*

(
*
(
c

(
+
a
d

+
(
+

+
(
b

[2
+
(

[2
+
(

+
[2
+
(

+
[2
+
(

[3
+
(

[3
+
(

+
(

*
)


7.1.3.

. ,
. ,
. :
yf(x,y,+1,z)
(6)
f.
, ,
, , .

, .
, -
( ) , - (,
). (6) , .2.
(6).

46
, ,
.

(
).

,
- , - .
(6)
y f x y 1 + z 4 -.
,
, , . ,
.

, F
( ). .
1,
, 2 ( 1.2), 0.
, ,
, ,
.
. (6).
.7.4.
7.4
,

y
y

y
f

z
4

0
0

(2
-

0
(2

(3
-

+
(3

(3
-

+
(3
-

(4
-

(4
-

47
y
)

,
, , .7.2.
y
f

x z
+
y

.7.2. ,
, ,
, ,
, .
F 1. ,
0, 1 ,
-
7.2.

. 7.5.
7.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

++
Delphi

Builder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

48
19
20
21
22
23
24
25
26
27
28
29
30
31
32









.
.
.
.
.
.
.
.

+
+
+
+
+
+
+
+
+
+
+
+
+
+

7.3.
7.3.1.
7.3.2.
7.3.3.
7.3.4.
7.3.5.

1. ., . -60, - .: , 1967.
2. .. , -.: , 1975.

49
1
PL0
<>::=<>.
<>::=<>< >
<>::=< >< >< >
< >::=CONST< >;
< >::=VAR< >;|$
< >::=< >
< >::=< >< >;|$
< >::=< >,
< >|< >
< >::=< >=<>
< >::=<>
< >::=< >,<>|<>
<>::=<>
< >::=PROCEDURE< >;<>
<>::=<>:=<>|
CALL< >|
BEGIN< >END|
IF<>THEN<>|
WHILE<>DO<>|$
< >::=<>
< >::=< >;<>|<>
<>::=<>|<>==<>
<><><>
<><<<>
<>>><>
<>>=<>
<><=<>
<>::=<>|+<>|-<>
<>::=<>|<>+<>|<>-<>
<>::=<>|<>*<>|<>/<>
<>::=<>|<>|(<>)
<>::=<>|<><>|<><>
<>::=< >|+< >|-< >
< >::=<>|< ><>
<>::=A|B|C|D|E|F|G|N|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<>::=0|1|2|3|4|5|6|7|8|9

50
2
ASPLE
<>::=BEGIN< >;< >END
< >::=<>|<>;< >
< >::=<>|<>;< >
<>::=<>< >
<>::=BOOL|INT|REF<>
< >::=<>|<>,< >
<>::=< >|< >|< >|<
>
< >::= <>:=<>
< >::=IF<>THEN< >
ELSE <. >FI
< >::=WHILE<>DO< >END
< >::=INPUT<>|OUTPUT<>
<>::=<>|<>+<>|<>-<>
<>::=<>|<>*<>|<>DIV<>|
<>MOD<>
<>::=<>|<>|(<>)|(<>)
<>::=<>==<>|<><><>
<>::=< >|< >
< >::=TRUE|FALSE
< >::=<>|(<>|-<>
<>::=<>|<><>
<>::=0|1|2|3|4|5|6|7|8|9
<>::=<>|<><>
<>::=A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z

51
3
PL0
N .
1
<>
<>
<>
< >
CONST
VAR
=
,
;
2

<>
<>
<>
<>
CALL
BEGIN
END
IF
THEN
;
<>
<>
<>
+
*
/
(
)
<>
<>
<>
<>
==
>>
<<
>=
<=

52
4
ASPLE
N .
1

< > <>


BOOL
INT
REF
,
;
< >
<>
<> ( )
IF
THEN
ELSE
FI
;
< >
<>
<> ( )
WHILE
DO
END
;
<>
<>
<>
< >
+
*
DIV
MOD