Лабораторная работа №2 проектирование лексического анализатора


Распознавание цепочек КС-языков



Download 443,5 Kb.
bet8/22
Sana01.07.2022
Hajmi443,5 Kb.
#727533
TuriЛабораторная работа
1   ...   4   5   6   7   8   9   10   11   ...   22

Распознавание цепочек КС-языков


Класс КС-языков допускает распознавание с помощью недетерминированного конечного автомата со стековой (или магазинной) памятью - МП-автомата. Контекстно-зависимые языки - последний класс языков, которые можно эффективно распознавать с помощью ЭВМ. Они допускаются двусторонними недетерминированными линейно ограниченными автоматами. Для цепочек языка без ограничений, в общем случае, требуется универсальный вычислитель (машина Тьюринга, машина с неограниченным числом регистров и т.п.). Контекстно-зависимые языки и языки без ограничений при создании структур языков программирования не используются.
МП-автомат в отличие от обычного КА имеет стек (магазин), в который можно помещать специальные "магазинные" символы (обычно это терминальные и нетерминальные символы грамматики языка). Переход из одного состояния в другое зависит не только от входного символа, но и от одного или нескольких верхних символов стека. Таким образом, конфигурация автомата определяется тремя параметрами: состоянием автомата, текущим символом входной цепочки (положением указателя в цепочке) и содержимым стека.
При выполнении перехода из стека удаляются верхние символы, соответствующие условию перехода, и добавляется цепочка, соответствующая правилу перехода. Первый символ цепочки становится верхушкой стека. Допускаются переходы, при которых входной символ игнорируется (и, тем самым, он будет входным символом при следующем переходе). Эти переходы называются -переходами. МП-автомат называется недетерминированным, если при одной и той же его конфигурации возможен более чем один переход. Если при окончании цепочки автомат находится в одном из заданных конечных состояний, а стек пуст, цепочка считается принятой (после окончания цепочки могут быть сделаны-переходы). Иначе цепочка символов не принимается.
По КС-грамматике G(VN,VT,P,S), V=VTVN можно построить недетерминированный МП-автомат, который допускает цепочки языка этой грамматики. Он имеет только одно состояние и следующий набор переходов:
 (A)() - для каждого правила грамматики A  P, где AVN, V*;
 а(а)() - для каждого терминала аVT;
Здесь в круглых скобках показано содержимое верхушки стека. Перед скобками стоит очередной символ входной цепочки или символ  для -перехода, а символ  разделяет состояния автомата до и после выполнения перехода (показывает такт работы автомата). В начале работы автомата в стеке лежит символ SVN, в конце работы автомата стек должен быть пуст.
Можно построить и другой автомат, который также содержит одно состояние и имеет следующие переходы:
 а()(а) - для каждого терминала аVT;
 ()(A) - для каждого правила грамматики A  P, где AVN, V*;
В таком варианте в начале разбора стек автомата пуст. Тогда в конце разбора допустимой цепочки в стеке должен остаться символ SVN.
По недетерминированному МП-автомату всегда можно построить КС-грамматику. Таким образом, класс КС-языков и класс языков, допускаемых МП-автоматами, эквивалентны.
Не каждый КС-язык допускает разбор с помощью детерминированного МП-автомата. Недетерминированные МП-автоматы могут распознавать более широкий класс языков, чем детерминированные - в этом их отличие от обычных КА. Интерес для реализации компиляторов представляют детерминированные КС-языки - собственное подмножество КС-языков, допускающее распознавание с помощью детерминированных МП-автоматов.
Два (недетерминированных) МП-автомата, построенных выше для произвольной КС-грамматики определяют два класса методов разбора КС-языков: сверху вниз и снизу вверх.
В первом случае (пример - рекурсивный спуск) при просмотре цепочки слева направо естественно будут получаться левые выводы. При детерминированном разборе проблема будет состоять в том, какое правило применить для раскрытия самого левого нетерминального символа.
Во втором случае детерминированный разбор удобно формализовать в терминах "сдвиг" (перенос символа из входной цепочки в магазин) и "свертка" (применение к вершине магазина какого-либо правила грамматики). При просмотре входной цепочки слева направо при этом будут получаться правые выводы. Проблема в этом случае состоит в выборе между сдвигом и сверткой и в выборе правила для свертки.

Download 443,5 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   ...   22




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish