Разработка лабораторного практикума по курсу "Разработка трансляторов для языков программирования"
Система дистанционного обучения 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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);
</P>
<P>
<TABLE>
<TR><TD WIDTH=100>Z -> P )<BR>P -> Qц | Pц<BR>Q -> ( | R<BR>R -> P,</TD><TD>Грамматика описывает предложения вида: <число>{+|-}<число>[.<число>], причем число после точки должно содержать не менее двух цифр.</TD></TR>
</TABLE>
В ходе разбора предложения заданными целыми числами должен быть заполен массив M.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>
б - терминальный символ "буква" ('A'..'Z','a'..'z');
</P>
<P>
<TABLE>
<TR><TD WIDTH=150>Z -> Q;<BR>P -> Q,<BR>Q -> б | Pб | Qб | Qц<BR></TD><TD>Грамматика описывает предложения вида: <идентификатор>,...,<идентификатор>;.</TD></TR>
</TABLE>
В ходе разбора предложения заданными идентификаторами должен быть заполнен массив S.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);
</P>
<P>
<TABLE>
<TR><TD WIDTH=100>Z -> Q | P | B<BR>Q -> ц | Qц<BR>T -> Q. <BR>P -> Tц | Pц<BR>B -> P. | Bц</TD><TD>Грамматика описывает предложения вида: <часы>[.<минуты>[.<секунды>]]</TD></TR>
</TABLE>
В ходе разбора предложения необходимо вычислить значение времени дня в секундах.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);
</P>
<P>
<TABLE>
<TR><TD WIDTH=100>Z -> Zц | Pц<BR>P -> ц | Qц<BR>Q -> Z-</TD><TD>Грамматика описывает предложения вида: <число>[-<число>...] для чисел, содержащих не менее двух цифр.</TD></TR>
</TABLE>
В ходе разбора предложения должна быть подсчитаны количество цифр в каждом числе и сумма этих цифр.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>
б - терминальный символ "буква" ('A'..'Z','a'..'z');
</P>
<P>
<TABLE>
<TR><TD WIDTH=100>Z -> P | A<BR>T -> C | Tц<BR>B -> T+ | T-<BR>P -> Bц | Pц<BR>C -> P.<BR>D -> Cц<BR>A -> Dц | Aц</TD><TD>Грамматика описывает предложения вида: <число>{+|-}<число>[.<число>], причем число после точки должно содержать не менее двух цифр.</TD></TR>
</TABLE>
В ходе разбора предложения должны быть получены значение всего выражения и число знаков после точки.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);
</P>
<P>
<TABLE>
<TR><TD WIDTH=100>Z -> Zц | Pц | ц<BR>P -> Z- | Z+</TD><TD>Грамматика описывает предложения вида: <число>[{+|-}<число>...]</TD></TR>
</TABLE>
В ходе разбора предложения должно быть выполнено заполнение массива M заданными числами и подсчитано значение выражения.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
c - терминальный символ, любой символ, кроме апострофа и запятой;
</P>
<P>
<TABLE>
<TR><TD WIDTH=150>Z -> T'<BR>T -> ' | T, | Tc | Z' | P'<BR>P -> Z,</TD><TD>Грамматика описывает предложения вида: 'слово',...,'слово'</TD></TR>
</TABLE>
В ходе разбора предложения должно быть выполнено заполнение массива S указанными символьными константами (без ограничивающих апострофов).
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>
б - терминальный символ "буква" ('A'..'Z','a'..'z');
</P>
<P>
<TABLE>
<TR><TD WIDTH=100>Z -> Zц | Zб | Tб<BR>T -> Z\ | Q\<BR>Q -> B:<BR>B -> б</TD><TD>Грамматика описывает предложения вида: <диск>:\<каталог>[<каталог>...]</TD></TR>
</TABLE>
В ходе разбора предложения необходимо определить имя диска и имена всех каталогов.</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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>
Для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка. В ходе выполнения задания:
<OL>
<LI>Разработать подпрограммы, обеспечивающие выделение лексических единиц из входного предложения;</LI>
<LI>Построить в программе матрицы смен состояний и вызова подпрограмм;</LI>
<LI>Обеспечить выдачу сообщений о различных видах синтаксических ошибок во входных предложениях</LI>
</OL></P>
<p>
Обозначение терминальных символов при написании граммматики:<BR>
ц - терминальный символ "цифра" (0,1,2,3,4,5,6,7,8,9);<BR>
</P>
<P>
<TABLE>
<TR><TD WIDTH=150>Z -> D}<BR>D -> Dц | Ац<BR>A -> C.<BR>C -> Q.<BR>Q -> Qц | Bц | Tц<BR>B -> D,<BR>T -> {</TD><TD>Грамматика описывает предложения вида: {<целое>..<целое>[,<целое>..<целое>...]}</TD></TR>
</TABLE>
В ходе разбора предложения должно быть выполнено заполнение массива M заданными целами числами и посчитано количество пар чисел.
</P>
<H4>Ввод:</h4>
<P>
Ввод исходных данных осуществляется из файла input.txt, который содержит одну строку, которая содержит предложение для разбора.
</P>
<H4>Вывод</h4>
<p>
Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:<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
Подобные документы
Система дистанционного обучения Distance Learning Belarus. Разработка лабораторного практикума по курсу "Разработка трансляторов для языков программирования". Базовые концепции разработки приложений для Интернет. Схема диалога пользователя с системой.
курсовая работа [1,3 M], добавлен 03.11.2012Характеристика основных моделей параллельных вычислений. Основные директивы и функции, применяемые в наиболее распространенных технологиях параллельного программирования. Функциональные требования к программе, реализующей лабораторный практикум.
дипломная работа [3,1 M], добавлен 17.06.2013Ознакомление с методами анализа популярности языков программирования. Рассмотрение логической модели базы данных дистанционного практикума. Разработка листинга скрипта создания таблицы-справочника. Анализ статистики по применению языков программирования.
диссертация [1,4 M], добавлен 10.07.2017Выбор инструментальных средств для разработки лабораторного практикума по работе с операционной системой Windows ХР. Рекомендации по установке виртуальной машины. Подключение жесткого диска, его разделение на разделы. Управление пользователями и группами.
дипломная работа [4,7 M], добавлен 17.08.2013Классификация электронных средств обучения, преимущества их использования, рекомендации по созданию. Требования к структуре и содержанию учебного материала. Особенности изучения языков программирования на уроках информатики. Среда программирования Delphi.
дипломная работа [770,2 K], добавлен 12.09.2015Обзор систем дистанционного образования. Разработка электронного практикума по созданию Flash-приложений на основе системы дистанционного обучения Moodle. Общая структура электронного практикума. Построение логической модели данных информационной системы.
дипломная работа [3,0 M], добавлен 19.01.2017Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.
курсовая работа [2,6 M], добавлен 17.11.2014Особенности дистанционного образования. Разработка электронного практикума по дисциплине "Методы и средства проектирования информационных систем и технологий". Предметная область, выделение информационных объектов. Разработка программного обеспечения.
дипломная работа [2,1 M], добавлен 27.10.2017Особенности дистанционного образования. Анализ функциональных характеристик среды дистанционного образования Moodle. Функционально-ориентированное проектирование электронного практикума. Разработка, тестирование и оценка надежности программного продукта.
дипломная работа [2,0 M], добавлен 12.08.2017Сущность отладки, условия ее выполнения. Ошибки при компиляции программы, создание и изменение исходных символьных файлов. Процесс преобразования кода в машинный. Первый программист, виды трансляторов, классификация и уровни языков программирования.
тест [7,6 K], добавлен 21.04.2009