Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО Билеты.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.24 Mб
Скачать

Порождаемый процесс

c1 segment

assume cs:c1,ds:c1

org 100h

start:

mov ah,09h

mov dx,offset msg1

int 21h

mov ah,3dh

mov al,0

mov dx,offset fname

int 21h

jnc ok

mov errcode,1

mov ah,09h

mov dx,offset msg2

int 21h

jmp fined

ok:

mov ah,09h

mov dx,offset msg3

int 21h

fined:

mov ah,4ch

mov al,errcode

int 21h

Открытие на чтение файла

msg1 db '(chld)chield proc started',10,13,'$'

msg2 db '(chld)file not open',10,13,'$'

msg3 db '(chld)file opened.chield proc closed',10,13,'$'

fname db 'file.txt',0

errcode db 0

c1 ends

end start

code segment

assume cs:code, ds:code

;data

fname db “my.txt”,0

msg db ‘Текстовое сообщене’,13,10,’Еще сообщение’,13,10,’$’

buff db 210 dup(0)

base: mov ax, code

mov ds, ax

; Создание и открытие файла

mov ah, 3ch

mov cx, 0000h

lea dx, fname

int 21h

;В регистре AX находится файловый дескриптор

; Запись в файл

Mov bx, ax

Mov ax, 4000h

Mov cx, buff-msg

Lea dx, msg

Int 21h;

; Закрытие файла

Mov ah, 3eh

Int 21h

; Открытие файла для чтения

Mov ah, 3dh

Mov al, 2

Lea dx, fname

Mov cl, 00h

Int 21h

; Чтение из файла в буфер

Mov bx, ax

Mov ah, 3fh

Mov cx, 100 ; Потенциальная длина буфера

Lea dx, buff

Int 21h

; Запись буфера в консоль

Mov ah, 09h

Lea dx, buff

Int 21h

; Закрытие файла

Mov ah, 3eh

Int 21h

; Возврат 0 и выход в операционную систему

Mov ah, 4ch

Mov al, 0

Int 21h

Code ends

End base

Билет 3 (сканер для лексем)

Сканер для лексем /,/*,//

Недетерминированный Конечный Автомат (НКА)

S-начальное состояние

Пустая стрелка переход по другому символу

S2- однолитерный разделитель

S5- двухлитерный разделитель

S2,S5-конечные состояния

Детерминированный конечный автомат

/

*

Др.символ

S1

S13

-

-

S13

S4

S4

S2

S4

-

-

S5

Билет 4 (построить грамматику с возведением в степень)

Построить грамматику для алгебраического выражения с операцией возведение в степень

Грамматика для выражений со степень

1. <E>::=<E> | <E>+<T> | <E>-<T> | <T>

2. <T>::=<T>*<F> | <T>/<F> | <F>

3. <F>::=<F>^<P> | <P>

4. <P>::=<id> | (<E>)

Такая грамматика не может быть использована для простого предшествования, так как в ней есть неоднозначность отношений предшествования.

Из правила 4 , (=. E из правила 1 и 4 (<.E и т.д.

Преобразуя данную грамматику, вводя стратификацию для E,T,F, получим следующую:

1. <E>::=<E’>

2. <E’>::=<E’> | <E’>+<T> | <E’>-<T> | <T>

3. <T>::=<T’>

4. <T’>::=<T’>*<F> | <T’>/<F> | <F>

5. <F>::=<F’>

6. <F’>::=<F’>^<P> | <P>

7. <P>::=<id> | (<E>)

Далее как билете 13 строит множество левых и правых символов-матрицу.

Билет 5 (преобразование для нисходящего разбора)

Построить грамматику для операций (видимо +,-,*,/).

Преобразовать грамматику для нисходящего разбора.

Исходная грамматика для заданных операций:

1. <E>::= <E>+<T> | <E>-<T> | <T>

2. <T>::=<T>*<F> | <T>/<F> | <F>

3. <F>::=<id> | (<E>)

Так как к грамматике нисходящего разбора предъявляются следующие требования:

1. Отсутствие левосторонней рекурсии

<X>::=<X>

2. Отсутствие общей левосторонней рекурсии

X::=V…

V::=X…

Нельзя использовать итерацию и факторизацию.

E::=T|TB

B::=+T|-T|+TB|-TB

T::=F|FG

G::=*F|/F|*FG|/FG

F::=<id> | (E)

/*было

преобразуем грамматику, используя итерацию.

1. <E>::= <T> | <T> {+T| -T}

2. <T>::= <F> | <F > {*F| /F}

3. <F>::=<id> | (<E>)

Такую грамматику не удобно использовать поэтому составим следующую:

1. <E>::= <T> | <T> < E’>

2. <E’>::=+<T> | -<T> | +<T><E’> | -<T><E’>

3. <T>::=<F>| <F><T’>

4. <T’>::=*<F> | /<F> | *<F><T’> | /<F><T’>

5. F::=<id> | (<E>)

*/

Такая грамматика удовлетворяет требованиям нисходящего разбора и не нарушает порядка действий в выражении.