Разработка лабораторного практикума по курсу "Разработка трансляторов для языков программирования"

Система дистанционного обучения Distance Learning Belarus и лабораторный практикум курса "Разработка трансляторов для языков программирования", его перенос в интерактивную среду обучения. Описание работы программы и её взаимодействия с пользователями.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.11.2012
Размер файла 588,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

<BODY>

<CENTER>

<H2>Вариант №2</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0102.pas или Laba0102.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);

</P>

<P>

<TABLE>

<TR><TD WIDTH=100>Z -&gt; P )<BR>P -&gt; Qц | Pц<BR>Q -&gt; ( | R<BR>R -&gt; P,</TD><TD>Грамматика описывает предложения вида: &lt;число&gt;{+|-}&lt;число&gt;[.&lt;число&gt;], причем число после точки должно содержать не менее двух цифр.</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения заданными целыми числами должен быть заполен массив M.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значения элементов массива M M(i), разделенные одним пробелом;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

(1,10,15)

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:

<BR>

<pre>

(1,10,15)

0

M(1)=1 M(2)=10 M(3)=15

</PRE></P>

<h4>Пример 2</h4>

<P>

Файл ввода input.txt содержит:<BR>

<PRE>

(3,R,5,6)

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:

<BR>

<PRE>

(3,R,5,6)

1

</pre></P>

</BODY>

</HTML>

Вариант №3:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №3</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0103.pas или Laba0103.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>

&nbsp;&nbsp;&nbsp;&nbsp;б - терминальный символ "буква" ('A'..'Z','a'..'z');

</P>

<P>

<TABLE>

<TR><TD WIDTH=150>Z -&gt; Q;<BR>P -&gt; Q,<BR>Q -&gt; б | Pб | Qб | Qц<BR></TD><TD>Грамматика описывает предложения вида: &lt;идентификатор&gt;,...,&lt;идентификатор&gt;;.</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения заданными идентификаторами должен быть заполнен массив S.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значения элементов массива S S(i), разделенные одним пробелом;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

aaa,bb,d7;

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

aaa,bb,d7;

0

S(1)=aaa S(2)=bb S(3)=d7

</PRE></p>

<h4>Пример 2</h4>

<p>

Файл ввода input.txt содержит:<BR>

<PRE>

x,,z;

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

x,,z;

2

</pre></P>

</BODY>

</HTML>

Вариант №4:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №4</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0104.pas или Laba0104.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);

</P>

<P>

<TABLE>

<TR><TD WIDTH=100>Z -&gt; Q | P | B<BR>Q -&gt; ц | Qц<BR>T -&gt; Q. <BR>P -&gt; Tц | Pц<BR>B -&gt; P. | Bц</TD><TD>Грамматика описывает предложения вида: &lt;часы&gt;[.&lt;минуты&gt;[.&lt;секунды&gt;]]</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения необходимо вычислить значение времени дня в секундах.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значение времени дня в секундах t;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

12.55

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

12.55

0

46500

</PRE></P>

<h4>Пример 2</h4>

<p>

Файл ввода input.txt содержит:<BR>

<PRE>

12a

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

12a

1

</pre></P>

</BODY>

</HTML>

Вариант №5:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №5</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0105.pas или Laba0105.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);

</P>

<P>

<TABLE>

<TR><TD WIDTH=100>Z -&gt; Zц | Pц<BR>P -&gt; ц | Qц<BR>Q -&gt; Z-</TD><TD>Грамматика описывает предложения вида: &lt;число&gt;[-&lt;число&gt;...] для чисел, содержащих не менее двух цифр.</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения должна быть подсчитаны количество цифр в каждом числе и сумма этих цифр.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку количество цифр для каждого числа n(i) и сумму цифр для каждого числа m(i) через один пробел;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

14-0999-532

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

14-0999-532

0

n(1)=2 n(2)=4 n(3)=3 m(1)=5 m(2)=27 m(3)=10

</PRE></P>

<h4>Пример 2</h4>

<p>

<PRE>

14+12-3-3-0

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

14+12-3-3-0

1

</pre></P>

</BODY>

</HTML>

Вариант №6:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №6</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0106.pas или Laba0106.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>

&nbsp;&nbsp;&nbsp;&nbsp;б - терминальный символ "буква" ('A'..'Z','a'..'z');

</P>

<P>

<TABLE>

<TR><TD WIDTH=100>Z -&gt; P | A<BR>T -&gt; C | Tц<BR>B -&gt; T+ | T-<BR>P -&gt; Bц | Pц<BR>C -&gt; P.<BR>D -&gt; Cц<BR>A -&gt; Dц | Aц</TD><TD>Грамматика описывает предложения вида: &lt;число&gt;{+|-}&lt;число&gt;[.&lt;число&gt;], причем число после точки должно содержать не менее двух цифр.</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения должны быть получены значение всего выражения и число знаков после точки.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значение всего выражения M с двумя знаками после запятой и число знаков после точки N;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

10-5.50

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

10-5.50

0

M=4.50 N=2

</PRE></P>

<h4>Пример 2</h4>

<p>

Файл ввода input.txt содержит:<BR>

<PRE>

10-a

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

10-a

1

</pre></P>

</BODY>

</HTML>

Вариант №7:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №7</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0107.pas или Laba0107.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);

</P>

<P>

<TABLE>

<TR><TD WIDTH=100>Z -&gt; Zц | Pц | ц<BR>P -&gt; Z- | Z+</TD><TD>Грамматика описывает предложения вида: &lt;число&gt;[{+|-}&lt;число&gt;...]</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения должно быть выполнено заполнение массива M заданными числами и подсчитано значение выражения.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значения элементов массива M M(i) и значение выражения v, разделенные одним пробелом;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

6+10-12

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

6+10-12

0

M(1)=6 M(2)=10 M(3)=12 v=4

</PRE></P>

<h4>Пример 2</h4>

<P>

Файл ввода input.txt содержит:<BR>

<PRE>

5+8+

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

5+8+

3

</pre></P>

</BODY>

</HTML>

Вариант №8:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №8</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0108.pas или Laba0108.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;c - терминальный символ, любой символ, кроме апострофа и запятой;

</P>

<P>

<TABLE>

<TR><TD WIDTH=150>Z -&gt; T'<BR>T -&gt; ' | T, | Tc | Z' | P'<BR>P -&gt; Z,</TD><TD>Грамматика описывает предложения вида: 'слово',...,'слово'</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения должно быть выполнено заполнение массива S указанными символьными константами (без ограничивающих апострофов).

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значения элементов массива S S(i) через один пробел;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

'кот','об''явление','ку,ку'

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

'кот','об''явление','ку,ку'

0

S(1)=кот S(2)=об'явление S(3)=ку,ку

</PRE></P>

<h4>Пример 2</h4>

<p>

Файл ввода input.txt содержит:<BR>

<PRE>

'проверка

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

'проверка

3

</pre></P>

</BODY>

</HTML>

Вариант №9:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №9</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0109.pas или Laba0109.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>

&nbsp;&nbsp;&nbsp;&nbsp;б - терминальный символ "буква" ('A'..'Z','a'..'z');

</P>

<P>

<TABLE>

<TR><TD WIDTH=100>Z -&gt; Zц | Zб | Tб<BR>T -&gt; Z\ | Q\<BR>Q -&gt; B:<BR>B -&gt; б</TD><TD>Грамматика описывает предложения вида: &lt;диск&gt;:\&lt;каталог&gt;[&lt;каталог&gt;...]</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения необходимо определить имя диска и имена всех каталогов.</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку имя диска D и имена всех каталогов S(i), разделенные одним пробелом;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

c:\ncc\kt

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

c:\ncc\kt

0

D=c S(1)=ncc S(2)=kt

</PRE></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<PRE>

c$:\windows

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

c$:\windows

1

</pre></P>

</BODY>

</HTML>

Вариант №10:

<HTML>

<HEAD><TITLE>Синтаксический анализ предложений для регулярной грамматики</TITLE></HEAD>

<BODY>

<CENTER>

<H2>Вариант №10</H2>

<TABLE>

<TR><TD>Исходный файл:</TD><TD>Laba0110.pas или Laba0110.c</TD></TR>

<TR><TD>Входной файл:</TD><TD>input.txt</TD></TR>

<TR><TD>Выходной файл:</TD><TD>output.txt</TD></TR>

</TABLE>

</CENTER>

<H4>Постановка задачи</h4>

<p>

&nbsp;&nbsp;Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:

<OL>

<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>

<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>

<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>

</OL></P>

<p>

&nbsp;&nbsp;Обозначение терминальных символов при написании граммматики:<BR>

&nbsp;&nbsp;&nbsp;&nbsp;ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>

</P>

<P>

<TABLE>

<TR><TD WIDTH=150>Z -&gt; D}<BR>D -&gt; Dц | Ац<BR>A -&gt; C.<BR>C -&gt; Q.<BR>Q -&gt; Qц | Bц | Tц<BR>B -&gt; D,<BR>T -&gt; {</TD><TD>Грамматика описывает предложения вида: {&lt;целое&gt;..&lt;целое&gt;[,&lt;целое&gt;..&lt;целое&gt;...]}</TD></TR>

</TABLE>

&nbsp;&nbsp;В ходе разбора предложения должно быть выполнено заполнение массива M заданными целами числами и посчитано количество пар чисел.

</P>

<H4>Ввод:</h4>

<P>

&nbsp;&nbsp;Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.

</P>

<H4>Вывод</h4>

<p>

&nbsp;&nbsp;Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<BR>

<UL>

<LI>Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку значения элементов массива M M(i) и число пар n через один пробел;</LI>

<LI>Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):<BR>

<TABLE>

<TR><TD><B>1</B></TD><TD>Если в процессе разбора встретился недопустимый символ</TD></TR>

<TR><TD><B>2</B></TD><TD>Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте</TD></TR>

<TR><TD><B>3</B></TD><TD>Если в процессе разбора обнаружилось, что предложение не закончено</TD></TR>

</TABLE></LI>

</UL></P>

<h4>Пример 1</h4>

<p>

Файл ввода input.txt содержит:<BR>

<pre>

{1..10,5..777,0..100}

</PRE>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<pre>

{1..10,5..777,0..100}

0

M(1)=1 M(2)=10 M(3)=5 M(4)=777 M(5)=0 M(6)=100 n=3

</PRE>

</P>

<h4>Пример 2</h4>

<p>

<PRE>

{3..20,3..const}

</pre>

Файл вывода output.txt для данного входного файла должен содержать следующие строки:<BR>

<PRE>

{3..20,3..const}

1

</PRE></P>

</BODY>

</HTML>

Приложение 3

Файл task.xml является одинаковым для всех вариантов первой лабораторной работы и содержит текст следующего вида:

<task name="Синтаксический анализ предложений для регулярной грамматики" ename="" author="Мария Певнева" cost="1" type="1"/>

Приложение 4

Файлы тестов и правильных ответов, составляющие полное множество тестов для каждого варианта содержат следующие данные:

Вариант №1:

№ теста

Входной файл

Выходной файл

1

a11=b-5

A11=b-5

0

p1=a11 p2=b k=-5

2

x=y+123

X=y+123

0

p1=x p2=y k=123

3

1a=qwe-90

1a=qwe-90

2

4

b=c

B=c

3

5

b=c-1a

B=c-1a

2

6

a=9i-2

A=9i-2

2

7

d=f*2

D=f*2

1

8

abcd=efgh-6839

Abcd=efgh-6839

0

p1=abcd p2=efgh k=-6839

9

u1=u1/3

U1=u1/3

1

10

er=io-3+5

Er=io-3+5

2

Вариант №2:

№ теста

Входной файл

Выходной файл

1

(1,10,15)

(1,10,15)

0

M(1)=1 M(2)=10 M(3)=15

2

(1,,2)

(1,,2)

2

3

(3,R,5,6)

(3,R,5,6)

1

4

(89,

(89,

3

5

(9,87,23,45,345,2345,12,23,0)

(9,87,23,45,345,2345,12,23,0)

0

M(1)=9 M(2)=87 M(3)=23 M(4)=45 M(5)=345 M(6)=2345 M(7)=12 M(8)=23 M(9)=0

6

(j)

(j)

1

7

()

()

2

Вариант №3:

№ теста

Входной файл

Выходной файл

1

aaa,bb,d7;

aaa,bb,d7;

0

S(1)=aaa S(2)=bb S(3)=d7

2

a,b,7c;

a,b,7c;

2

3

a$,b;

A$,b;

1

4

x,,z;

x,,z;

2

5

z,y,z

Z,y,z

3

6

a,b,c,d,e,f,g,h,i,j,k;

a,b,c,d,e,f,g,h,i,j,k;

0

S(1)=a S(2)=b S(3)=c S(4)=d S(5)=e S(6)=f S(7)=g S(8)=h S(9)=i S(10)=j S(11)=k

7

;

;

2

8

test;

Test;

0

S(1)=test

Вариант №4:

№ теста

Входной файл

Выходной файл

1

12.55

12.55

0

t=46500

2

12a

12a

1

3

12.55.20.1

12.55.20.1

2

4

1.2.3

1.2.3

0

t=3723

5

0.0.59

0.0.59

0

t=59

Вариант №5:

№ теста

Входной файл

Выходной файл

1

14-0999-532

14-0999-532

0

n(1)=2 n(2)=4 n(3)=3 m(1)=5 m(2)=27 m(3)=10

2

14+12-3-3-0

14+12-3-3-0

1

3

890-678-

890-678-

3

4

39--78

39--78

2

5

1-2-3-4-5-6-7-8-9

1-2-3-4-5-6-7-8-9

2

6

001-005-009

001-005-009

0

n(1)=3 n(2)=3 n(3)=3 m(1)=1 m(2)=5 m(3)=9

7

89a

89a

1

Вариант №6:

№ теста

Входной файл

Выходной файл

1

10-5.50

10-5.50

0

M=4.50 N=2

2

1+1

1+1

0

M=2.00 N=0

3

5+6.23

5+6.23

0

M=11.23 N=2

4

8-7

8-7

0

M=1.00 N=0

5

12+12.03

12+12.03

0

M=24.03 N=2

6

+45-56

+45-56

2

7

78+56.6

78+56.6

3

8

6-8.89

6-8.89

0

M=-2.89 N=2

9

4-6.321

4-6.321

0

M=-2.32 N=3

10

1--1

1--1

2

11

1a

1a

1

12

1-3h

1-3h

1

Вариант №7:

№ теста

Входной файл

Выходной файл

1

14

14

0

M(1)=14 v=14

2

6+10-12

6+10-12

0

M(1)=6 M(2)=10 M(3)=12 v=4

3

6*2-12

6*2-12

1

4

5+-1

5+-1

2

5

5+8+

5+8+3

6

1+2-3+4-5+6-7+8-9

1+2-3+4-5+6-7+8-9

0

M(1)=1 M(2)=2 M(3)=3 M(4)=4 M(5)=5 M(6)=6 M(7)=7 M(8)=8 M(9)=9 v=-3

7

10-12.5

10-12.5

1

Вариант №8:

№ теста

Входной файл

Выходной файл

1

'кот','об''явление','ку,ку'

'кот','об''явление','ку,ку'

0

S(1)=кот S(2)=об'явление S(3)=ку,ку

2

лес,дом

лес,дом

2

3

'проверка

'проверка

3

4

'одно слово'

'одно слово'

0

S(1)=одно слово

5

'''','апостроф'

'''','апостроф'

0

S(1)=' S(2)=апостроф

Вариант №9:

№ теста

Входной файл

Выходной файл

1

c:\ncc\kt

c:\ncc\kt

0

D=c S(1)=ncc S(2)=kt

2

c$:\windows

c$:\windows

1

3

\\class1\progra~1

\\class1\progra~1

2

4

a:\

A:\

3

5

d:\windows\system32

D:\windows\system32

0

D=d S(1)=windows S(2)=system32

6

a:\dn\dn

a:\dn\dn

0

D=a S(1)=dn S(2)=dn

7

e:\program\bp\bin\

e:\program\bp\bin\

3

Вариант №10

№ теста

Входной файл

Выходной файл

1

{1..10,5..777,0..100}

{1..10,5..777,0..100}

0

M(1)=1 M(2)=10 M(3)=5 M(4)=777 M(5)=0 M(6)=100 n=3

2

{3..20,3..const}

{3..20,3..const}

1

3

1..5

1..5

2

4

{4..6,

{4..6,

3

5

{1..80}

{1..80}

0

M(1)=1 M(2)=80 n=1

6

{4..23,8..90,1..3}

{4..23,8..90,1..3}

0

M(1)=4 M(2)=23 M(3)=8 M(4)=90 M(5)=1 M(6)=3 n=3

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.