Автор работы: Пользователь скрыл имя, 17 Декабря 2013 в 23:25, лабораторная работа
Задание:
Написать программу синтаксического анализа автоматного языка вызова процедур языка Fortran - 77; цепочки языка имеют вид:
CALL <идентификатор><список фактических параметров>
<список фактических параметров> :: = <параметр>[,<список фактических параметров>]
<константа любая>
<параметр> :: = <константа целая>
<идентификатор>
<идентификатор>
<идентификатор> - идентификатор, начинается с буквы, включает последовательность букв, цифр, не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (CALL, FORMAT, FOR, TO);
<константа целая> - целое число в диапазоне 1 +32767;
<константа любая> - целое число в диапазоне -32768 +32767, число с фиксированной точкой, число с плавающей точкой. Число цифр порядка 2.
1 ПОСТАНОВКА ЗАДАЧИ 3
2 ГРАФ СОСТОЯНИЙ АНАЛИЗАТОРА 4
3 ОПИСАНИЕ ПРОГРАММЫ 6
3.1 Описание пользовательского интерфейса 6
3.2 Примеры правильных и неправильных цепочек 7
4. ОСНОВНЫЕ ЛИСТИНГИ ПРОГРАММЫ………………………………………….
case State.C:
}// конец проверки константы
case State.C:
}
}
}
}
}
break;
}//конец списка параметров
case State.E:
{ // ошибка
label1.Text = exc;
richTextBox1.Focus();
richTextBox1.SelectionStart = pr;
return;
}
}// конец проверки строки
}// конец цикла while
if (st==State.E)
{
label1.Text = exc;
richTextBox1.Focus();
richTextBox1.SelectionStart = pr;
return;
}
if (st == State.F || i == s.Length)
{
if (s == "") { label1.Text = "Ошибка. Строка не может быть пустой"; return; }
else
{
s1 = System.Text.
str1 = s.Split(new Char[] { ' ', ')', '(', ',' });
int m = 0;
for (int k = 0; k < str1.Length; k++)
{
if (str1[k] != "" && k != str1.Length)
{
str2[m] = str1[k];
m++;
}
}
for (int j = 1; j < str2.Length; j++)
{
for (int k = 1; k < str2.Length; k++)
{
if (str2[j] == str2[k])
{