- •1. Требования к выполнению курсовой работы и порядок выполнения
- •2. Построение лексического анализатора
- •3. Организация таблиц лексического анализатора и поиска в них
- •4. Разработка синтаксического анализатора методом рекурсивного спуска
- •Приложение 1
- •Библиографический список
- •Оглавление
- •390005, Рязань, ул. Гагарина, 59/1.
Приложение 1
ВАРИАНТЫ ЗАДАНИЙ
Вариант 1
PROGRAM NOMER_l;
VAR X,Y,Z: INTEGER;
BEGIN
1: READ(X,Y);
Z:=X*20+Y/X-100;
IF Z>0 THEN
WRITE(Z,X)
ELSE GOTO 1
END.
Вариант 2
PROGRAM NOMER_2;
VAR I: INTEGER;
S: REAL;
BEGIN
S := 0;
1: FOR I := 1 TO 50 DO
S := S+1/I; IF S*S <> 10 THEN
WRITE(S) ELSE GOTO 1
END.
Вариант 3
PROGRAM NOMER_3;
VAR K,J: INTEGER;
S: REAL;
BEGIN
READ(S); IF S = 0.0 THEN
GOTO 10;
FOR J := 1 TO 20 DO
BEGIN
S:=S+J;K := J
END;
10: WRITE(S)
END.
Вариант 4
PROGRAM NOMER_4;
VAR I,K,SUM: INTEGER;
BEGIN
SUM := 0;
10: FOR I := 20 TO 100 DO
BEGIN
READ(K);
SUM := SUM+K
END;
IF S >= 200 THEN
WRITE(SUM)
ELSE GOTO 10
END.
Вариант 5
PROGRAM NOMER_5;
VAR X,I: INTEGER;
M: REAL;
BEGIN
READ(X);
20: M := 0.0;
FOR I := 1 TO X+20 DO
M := M+I*X;
IF M+20.5 >= X-10 THEN
GOTO 20 ELSE
WRITE(M,X)
END.
Вариант 6
PROGRAM NOMER_6;
VAR A, B, C, D: REAL;
I: INTEGER;
BEGIN
FOR I :=1 TO 10 DO
BEGIN
1: READ(A,B,C);
D := B*B-4*A*C;
IF D = 0 THEN GOTO 1
ELSE GOTO 2;
END; WRITE(D);
2: END.
Вариант 7
PROGRAM NOMER_7;
VAR A,B,C,D: REAL;
I: INTEGER;
BEGIN
1: READ(A,B,C);
FOR I := 0 TO 50 DO
D:=(A*A-I/C)*B+20;
IF D*D <> 10.5 THEN
GOTO 1
ELSE WRITE(D,A,B);
IF D <= 20 THEN
GOTO 1
END.
Вариант 8
PROGRAM NOMER_8;
VAR N,I,J,M: INTEGER;
BEGIN
1: READ(N); M := 0;
FOR I := 2 TO N DO
BEGIN
J := I*I;
M := M+J
END;
IF M+J >= J+100 THEN
WRITE(M,J) ELSE GOTO 1
END.
Вариант 9
PROGRAM NOMER_9;
VAR I: INTEGER;
Z,R:REAL;
BEGIN
READ(Z);
FOR I := 1 TO 100 DO
BEGIN
R := Z*Z+I-10.0;
IF R*R-Z <= Z*R THEN
GOTO 1
END;
1: WRITE(R)
END.
Вариант 10
PROGRAM NOMER_10;
VAR X,Y,XX: REAL;
I:INTEGER;
BEGIN
1: READ(X);
XX := 0.1+X;
FOR I := 1 TO 100 DO
Y:=0.1*ХХ-2.12/I;
IF Y-X*X <= 20.0 THEN
WRITE(Y,X)
ELSE GOTO 1
END.
Вариант 11
PROGRAM NOMER_11;
VAR S,X,Y: REAL;
I: INTEGER;
BEGIN
READ(X,Y); S := 0.0;
IF X*X*Y-Y < 1.0/X THEN
GOTO 1 ELSE GOTO 2;
1: S := 1.0;
2: FOR I := 0 TO Y-2 DO
S := S+(Y*X)/I;
WRITE(X,Y,S)
END.
Вариант 12
PROGRAM NOMER_12;
VAR A,B,C,X,P: REAL;
J: INTEGER;
BEGIN
A: =3.1415;
1: READ(B,X,C);
FOR J := 1 TO X*X-C DO
BEGIN
P := (А+В-С)/(Х-20.14);
WRITE(P,J)
END;
IF P <= 255.5 THEN GOTO 1
END.
Вариант 13
PROGRAM NOMER_13;
VAR I,J: INTEGER;
A,R: REAL;
BEGIN
20: READ(A);
FOR I := 2 TO 100 DO
FOR J := 0 TO I-1 DO
R:=A*3.141+1.0/I;
IF R+A*A <= R-A THEN
GOTO 20
ELSE WRITE(R,A)
END.
Вариант 14
PROGRAM NOMER._14;
VAR A,B,X,Y: REAL; I: INTEGER;
BEGIN
1: READ(A,B,X,Y);
FOR I := 1 TO X*X-100 DO
BEGIN
X := (X+1.12)*A;
Y := (Y-2.15)/B
END;
IF X+Y <= 20.5 THEN
WRITE(X,Y)
ELSE GOTO 1
END.
Вариант 15
PROGRAM NOMER_15;
VAR A,I,N: INTEGER;
BEGIN
10: READ(N);
FOR I := 1 TO N+2 DO
BEGIN
N := N-I*I;
A := 4*N+50
END;
IF N-A <= A/10 THEN
A := N*N ELSE GOTO 10;
WRITE(A,N)
END.
Вариант 16
PROGRAM NOMER_16;
VAR I,J,D: INTEGER;
BEGIN
1: READ(I,D);
IF D*D >= I THEN
FOR I := 3 TO D-I DO
BEGIN
J := I-10*D;
WRITE(J,I)
END
ELSE GOTO 1
END.
Вариант 17
PROGRAM NOMER_17;
VAR X,Y,Z: REAL;
I: INTEGER;
BEGIN
READ(X,Y);
Z := 20*X*X-Y/X;
1: X := 0.0;
FOR I := 1 TO 100 DO
BEGIN
X := Z+I*I;
Z := Z+0.1
END;
IF X+Y <= Z THEN GOTO 1
ELSE WRITE(X,Y)
END.
Вариант 18
PROGRAM NOMER_18;
VAR I: INTEGER;
X, Y: REAL;
BEGIN
X := 3.81; Y := 5.53;
20: IF X+20.0 <= X*1.5 THEN
GOTO 10;
FOR I := 1 TO 50 DO
Y := Y*(X+1.0-I);
READ(X,Y);
GOTO 20;
10: WRITE(X,Y)
END.
Вариант 19
PROGRAM NOMER_18;
VAR S,A: REAL;
D,I: INTEGER;
BEGIN
1: D := 20; 2: READ(A);
FOR I := 0 TO D DO
BEGIN
S := 3.141*I-A;
WRITE(S)
END; IF D >= S THEN
GOTO 1 ELSE GOTO 2
END.
Вариант 20
PROGRAM NOMER_20;
VAR А,В, X: REAL;
I,C,D: INTEGER;
BEGIN
READ(A,B,X);
IF A-B>=B+X THEN GOTO 1
ELSE GOTO 2;
1: C := 0; D := A*B+X/1.5;
2: FOR I := 1 TO 200-I DO
BEGIN
C := 10;
D := A*A+X/2. 0
END;
WRITE(C,D)
END.
ПРИЛОЖЕНИЕ 2
Правила грамматики входного языка
1. <программа>::=РRОGRАМ<имя программы>;VAR<список описаний>
BEGIN<список операторов>END.
2. <имя программы>::=ИМЯ
3. <список описаний>::=<описание>;{<описание>;}
4. <описание>::=<список имён>:<тип>
5. <тип>::=INTEGER | REAL
6. <список имён>::=ИМЯ{,ИМЯ}
7. <список операторов>::=<оператор>;{<оператор>;}
8. <оператор> ::=<непомеченный оператор> | <метка>:<непомеченный оператор>
9. <непомеченный оператор>::==<присваивание> | <ввод> | <вывод> | <условный оператор> | <цикл> | <оператор перехода>
10. <присваивание>::=ИМЯ:=<выражение>
11. <выражение>::=<простое выражение> | <простое выражение> = | <>| < | > | <= | >= <простое выражение>
12. <простое выражение>:: =<терм>{+<терм> | -<терм>}
13. <терм>::=<множитель>{*<множитель> |/<множитель>
14.<множитель>::=ИМЯ | ЦЕЛОЕ | ВЕЩЕСТВЕННОЕ | (<простое выражение>)
15. <ввод>::=READ(<список имен>)
16. <вывод>::=WRIТЕ(<список имён>)
17. <условный оператор>::=IF<выражение>THEN<оператор> | IF<выражение> THEN<оператор> ELSE<оператор>
18. <цикл>::=FOR<индексное выражение>DO<тело цикла>
19. <индексное выражение>::=ИМЯ:=<выражение>ТО<выражение>
20. <тело цикла>::=<оператор> | BEGIN<список операторов>END
21. <оператор перехода>::=GOТО<метка>
22. <метка>::=ЦЕЛОЕ
В грамматике помимо общепринятых используются следующие терминальные символы: ИМЯ - любая последовательность латинских букв и арабских цифр длиной не более восьми символов, начинающаяся с буквы; ЦЕЛОЕ – целая константа; ВЕЩЕСТВЕННОЕ – вещественная константа.