Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / tayak_lab

.doc
Скачиваний:
15
Добавлен:
17.04.2013
Размер:
22.53 Кб
Скачать

Задания к лабораторным работам по дисциплине «Теория алгоритмических языков и компиляторов»

Лабораторная работа №1

Предложения языка представляют собой десятичные числа.

G=({S,D,F},{0,1,2,3,4,5,6,7,8,9,.},P,S)

Продукции множества P.

S-> D|D.D|D.

D-> F|DF

F-> 0|1|2|3|4|5|6|7|8|9

Разработать:

  1. Автоматную грамматику, порождающую этот язык.

  2. Детерминированный конечный автомат, допускающий данный язык.

  3. Программу на языке С++ выполняющую синтаксический анализ путем моделирования работы конечного автомата. Исходные предложения находятся в файле. По каждому исходному предложению программа выдает информацию о первом ошибочном символе предложения или о его правильности.

Лабораторная работа №2

Разработать программу синтаксического анализа на языке С++ методом рекурсивного спуска. Программа должна обнаруживать в исходном предложении первую синтаксическую ошибку с точностью до ошибочного символа. Исходные предложения находятся в файле.

Язык задается грамматикой.

<S>->#define<идентификатор языка Си><строка символов С++>

|#include “<имя файла>”

|#else

|#ifdef <идентификатор>

|#ifndef<идентификатор>

Доопределите грамматику самостоятельно.

Примечание: нетерминал задается в <>.

Лабораторная работа №3

Разработать программу синтаксического анализа на языке С++ путем моделирования работы магазинного автомата. Программа должна обнаруживать в исходном предложении первую синтаксическую ошибку с точностью до ошибочного символа. Исходные предложения находятся в файле.

Язык задается грамматикой.

<S>->#define<идентификатор языка Си><строка символов С++>

|#include “<имя файла>”

|#else

|#ifdef <идентификатор>

|#ifndef<идентификатор>

Доопределите грамматику самостоятельно.

Примечание: нетерминал задается в <>.

Соседние файлы в папке Лабы