Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Представление автоматов




Некоторые приемы приведения к грамматикам простого предшествования.

Грамматика для списков (которые очень часто встречаются): переменные, параметры, индексы.

<L>→λ

<L>→a<R>

<R>→, a<R>

<R>→λ

Предположим, что некоторая грамматика содержит такие 2 правила:

<S>→ if <B> then <S1>

<S>→ if <B> then <S1> else <S2>

Эта грамматика не может быть LL(1) грамматикой, т.к. if содержится во множествах выбора обоих правил. При построении LL(1) грамматик важно, чтобы конструкции языка, начинающиеся с одинаковых символов, порождались одним общим для них правилом. Для рассматриваемого примера можно получить.

<S>→ if <B> then <S1><нечто>

<нечто>→ else <S2>|λ

Про такие правила говорят, что они получены из первоначальных двух методом «левой факторизации».

Грамматика с леворекурсивным нетерминалом не может быть LL(1) грамматикой. Грамматику с левой рекурсией всегда можно представить в грамматику без левой рекурсии. Основная идея состоит в том, чтобы смотреть на рекурсивный нетерминал как на порождающий некоторую цепочку, за которой следует список из одного или более элементов.

Например: <S>→<S>a

<S>→b

Трактуем нетерминал <S> как порождающий символ b, за которым следует список из нуля или символов a.

<A>→b<список>

<список>→a <список>|λ

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


1.A→a<B>

2.A→ab

A→a<B><список>

A→abc<список>


A→<A>cb

<B>→ <A>b

<B>→d

<список>→cb<список>|λ

<B>→<A>

<B>→d


(Замена края:

Для правил


<A>→α1

<A>→α

<B>→ β<A>γ

<B>→βα1γ

<B>→ βαnγ)


Исключение λ-правил

Пусть есть две разновидности нетерминала А: < Ада >(с λ -правилами) и < Анет >

<S>→a<A><S> <S>→a<Анет><S>

<S>→b <S>→a<Ада><S>

<A>→c<S> <S>→b

<A>→λ <Aнет>→c<S>

<Aда>→λ (однозначное правило, которое можно исключить)

<S>→a<Анет><S>

<S>→a<S>

<S>→b

<Aнет>→c<S>

 

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

<S>→a<A><S>

<S>→a<S>

<S>→b

<A>→c<S>

Общие правила в методике исключение λ -правил:

1. Определить, какие нетерминалы грамматики могут порождать пустую цепочку

2. Заменить каждое из правил, правые части которых содержат хотя бы по одному аннулирующему нетерминалу, множеством новых правил.

3. Исключить из грамматики все λ -правила, включая те, которые могли появиться на шаге 2.

 

 

Один из удобных способов представления КА – таблица переходов. КА с состояниями S1,…,Sn и входными литерами Т1,…,Тn можно представить в виде матрицы В, состоящей из n x m элементов. Элемент B[i,j ] содержит число k – номер состояния Sk, такое что M[Si,Tj]=Sk. Можно условиться, что состояние S1 – начальное, а список заключённых состояний представлен вектором

Такая матрица называется матрицей переходов, т.к. она указывает, каким образом происходит переключение из одного состояние в другое.

Другим способом представления может быть списочная структура. Представление каждого состояния с k дугами, исходящими из него, занимает 2k+2 слов. Первое слово – имя состояния, второе – значение k. Каждая последующая пара слов содержит терминальный символ из входного алфавита и указатель на начало представления состояния, в которое надо перейти по этому символу.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 431; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.