Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекц_я 3.1перетв_НСАдоДСА_рег_вирази.doc
Скачиваний:
4
Добавлен:
27.11.2019
Размер:
116.74 Кб
Скачать

4. Синтаксический анализ регулярных языков

Задачей синтаксического анализа считается проверка, принадлежит ли произвольная заданная цепочка   * языку L(G) для заданной грамматики G. На основе методов синтаксического анализа решаются задачи синтаксически управляемой обработки данных (например, текстов). Такой задачей является и задача трансляции. Регулярные языки и порождающие их А-грамматики используются, в основном, для лексического анализа  распознавания в тексте его лексических единиц, лексем, т.е. слов, из которых по более сложным правилам строится текст. 

Если язык задан регулярным выражением, то для синтаксического анализа этого языка можно построить его А-грамматику с помощью алгоритма из теоремы 3.8. Для анализа регулярного языка используют устройство, называемое конечным автоматом, которое можно построить по А-грамматике языка. 

 

4.1. Конечные автоматы

4.1.1. Основные определения

Конечный автомат состоит из ленты конечной длины, на которой записан текст, и читающей головки, движущейся вдоль ленты слева направо. Автомат в каждый момент находится в каком-то состоянии, которых у него конечное число. На каждом шаге автомат сдвигается на один символ вправо (читает символ) и переходит в новое состояние (которое может совпадать со старым). Новое состояние определяется старым состоянием и прочитанным символом. Если прочитан последний символ, автомат останавливается. Новое состояние может определяться неоднозначно  тогда автомат называется недетерминированным. Для анализа же используются детерминированные автоматы. Автомат сообщает, допустима ли прочитанная цепочка.

Формально, конечным автоматом называется набор A = (Q,T,t,q0,F), где Tтекстовый алфавит; Q  конечное множество состояний, T  Q =  ; q0  Qначальное состояние; FQ  множество заключительных состояний; t  множество правил перехода, t  QTQ.

Правило перехода (q,a,q')  t записывается в виде (q,a)  q' и означает, что из q автомат может перейти в q', прочитав символ a

Конфигурацией автомата называется любая цепочка вида q, где q  и   *, в начальной конфигурации q = q0. Отношение перехода A на множестве конфигураций определяется следующим образом:

A q'  (q,a)  q'  t

Если для каждой пары (q,a) имеется не более одного правила перехода, то автомат называется детерминированным. Тогда t называется функцией перехода и t(q,a) = q', если есть правило (q,a)  q'.

Определим отношение qq', означающее, что состояние q' достижимо из q на цепочке   *, как наименьшее отношение, удовлетворяющее следующим условиям:

  1. qq;

  2. qaq', если в t есть правило (q,a)  q" и q"q'.

Говорят, что цепочка   * допускается автоматом A, если на  из начального состояния достижимо какое-нибудь заключительное, т.е. если q0q и  F. Множество всех допускаемых автоматом A цепочек называется языком, допускаемым автоматом A и обозначается L(A). 

Пример 4.1. Множество идентификаторов допускается автоматом с ={q0,q1}, ={q1}, ={a,...,z,0,...,9} и правилами

(q0,a)  q1, ..., (q0,z)  q1, (q1,a)  q1, ..., (q1,z)  q1, (q1,0)  q1, ..., (q1,9)  q1. 

Автомат можно наглядно представлять его диаграммой  помеченным ориентированным графом, вершинами которого являются состояния, помеченные именем или номером состояния, а помеченная дуга qaq' соответствует правилу (q,a)  q'. Заключительные состояния будем обозначать двойным кружком. Так, предыдущий автомат представляется диаграммой

Из определений непосредственно вытекает

Л е м м а  4.1. qq'     в диаграмме есть путь из q в q', метки дуг которого образуют цепочку (учитываются и пути нулевой длины, соответствующие  = ). 