Реферат: Синтаксический распознаватель арифметического оператора условного перехода языка FORTRAN - Refy.ru - Сайт рефератов, докладов, сочинений, дипломных и курсовых работ
Министерство
науки,
высшей школы
и технической
политики Российской
Федерации.
Новосибирский
Государственный
Технический
Университет.
Курсовая
работа по системному
программированию.
Синтаксический
распознаватель
арифметического
оператора
условного
перехода языка
FORTRAN.
Факультет:
АВТ.
Кафедра:
АСУ.
Группа:
А–513.
Студент:
Бойко Константин
Анатольевич.
Преподаватель:
Шорников Юрий
Владимирович.
Ассистент: Панова
Вера Борисовна.
Дата:
30 апреля 1997 г.
Отметка
о защите:
Новосибирск.
Язык
оператора.
Язык
арифметического
оператора
условного
перехода языка
FORTRAN.
IF(<АВ>)
LABEL1,LABEL2,LABEL3
АВ
- Арифметическое
Выражение.
LABEL1,LABEL2,LABEL3
- первая,
вторая
и третья метки
соответственно.
Грамматика
языка.
G[<Оператор>]:
<Оператор>
®
IF(<АВ>)
®
<ЦБЗ>
<АВ> ®
T | <АВ>+T
| <АВ>-T
T ®
O | T*O | T/O | T**O
O ®
(<АВ>) | <Идентификатор>
| <ЧПЗ>
<Идентификатор>
®
Б{Б|Ц}
<ЦБЗ> ®
Ц{Ц}[L]
<ЧПЗ> ®
Ц{Ц}[.Ц{Ц}]
Условные
обозначения:
Т
–
ТЕРМ.
О
–
ОПЕРАНД.
Б
–
БУКВА.
Ц
–
ЦИФРА.
ЦБЗ
–
ЦЕЛОЕ
БЕЗ ЗНАКА.
**
–
ВОЗВЕДЕНИЕ
В СТЕПЕНЬ.
LABEL
–
МЕТКА.
ЧПЗ
–
ЧИСЛО
С ПЛАВАЮЩЕЙ
ЗАПЯТОЙ.
L
–
КОНЕЦ
СТРОКИ (пусто).
АВ
–
АРИФМЕТИЧЕСКОЕ
ВЫРАЖЕНИЕ.
Классификация
грамматики.
Данная грамматика
G[<ОПЕРАТОР>],
согласно
классификации
Хомского, является
контекстно-свободной,
так как правая
часть каждой
редукции начинается
либо с терминального
символа, либо
с нетерминального,
принадлежащего
объединённому
словарю.
A
®
a, AОVn,
aОV*.
Грамматика
G[<ОПЕРАТОР>]
не является
автоматной,
так как не все
её редукции
начинаются
с терминального
символа. По
этой же причине
данная грамматика
не является
S
-
грамматикой.
Метод
анализа.
Для данной
грамматики
реализован
разбор методом
рекурсивного
спуска, поскольку
она относится
к классу
контекстно-свободных.
Идея метода
состоит в том,
что каждому
нетерминальному
символу ставится
в соответствие
определённая
программная
единица (функция),
которая распознаёт
цепочку, порождаемую
этим нетерминалом.
Эти процедуры
и функции вызываются
в соответствии
с правилами
грамматики
и иногда вызывают
сами себя.
Данный метод
реализован
на языке C++,
поскольку он
обладает рекурсивными
возможностями.
Диагностика
и нейтрализация
ошибок.
Для данной
грамматики
производится
только диагностика
и нейтрализация
ошибок. Исправление
ошибок не
производится.
Нейтрализация
ошибок осуществляется
по методу Айронса,
то есть, спускаясь
по синтаксическому
дереву без
возврата по
контексту, при
обнаружении
тупиковой
ситуации
отбрасываются
те литеры (символы),
которые привели
в тупиковую
ситуацию и
разбор продолжается.
Тестирование.
ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
IF(((6/t+g*456)/(9.347*y-555))**6)
64,44,548
ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
Текущий
символ ( - 40.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ ( - 40.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ ( - 40.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ 6 - 54.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 6.
FLOAT -
проверка на
число с плавающей
запятой с цифры
6.
Текущий
символ / - 47.
Текущий
символ t - 116.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа t.
Текущий
символ + - 43.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ g - 103.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа g.
Текущий
символ * - 42.
Текущий
символ 4 - 52.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 4.
FLOAT -
проверка на
число с плавающей
запятой с цифры
4.
Текущий
символ 5 - 53.
Текущий
символ 6 - 54.
Текущий
символ ) - 41.
Текущий
символ / - 47.
Текущий
символ ( - 40.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ 9 - 57.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 9.
FLOAT -
проверка на
число с плавающей
запятой с цифры
9.
Текущий
символ . - 46.
Текущий
символ 3 - 51.
Текущий
символ 4 - 52.
Текущий
символ 7 - 55.
Текущий
символ * - 42.
Текущий
символ y - 121.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа y.
Текущий
символ - - 45.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ 5 - 53.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 5.
FLOAT -
проверка на
число с плавающей
запятой с цифры
5.
Текущий
символ 5 - 53.
Текущий
символ 5 - 53.
Текущий
символ ) - 41.
Текущий
символ ) - 41.
Текущий
символ * - 42.
Текущий
символ * - 42.
Текущий
символ 6 - 54.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 6.
FLOAT -
проверка на
число с плавающей
запятой с цифры
6.
Текущий
символ ) - 41.
Текущий
символ - 32.
Текущий
символ 6 - 54.
ABS - проверка
на Целое Без
Знака с цифры
6.
Текущий
символ 4 - 52.
Текущий
символ , - 44.
Текущий
символ 4 - 52.
ABS - проверка
на Целое Без
Знака с цифры
4.
Текущий
символ 4 - 52.
Текущий
символ , - 44.
Текущий
символ 5 - 53.
ABS - проверка
на Целое Без
Знака с цифры
5.
Текущий
символ 4 - 52.
Текущий
символ 8 - 56.
Текущий
символ NULL
- 0.
ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
IF(r**34/50.22)
3,56,1
ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
Текущий
символ ( - 40.
AB - Проверка
на Арифметическое
Выражение.
Текущий
символ r - 114.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа r.
Текущий
символ * - 42.
Текущий
символ * - 42.
Текущий
символ 3 - 51.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 3.
FLOAT -
проверка на
число с плавающей
запятой с цифры
3.
Текущий
символ 4 - 52.
Текущий
символ / - 47.
Текущий
символ 5 - 53.
Term - Проверка
на Терм.
Operand -
Проверка на
Операнд.
IDENT -
Проверка на
Идентификатор
с символа 5.
FLOAT -
проверка на
число с плавающей
запятой с цифры
5.
Текущий
символ 0 - 48.
Текущий
символ . - 46.
Текущий
символ 2 - 50.
Текущий
символ 2 - 50.
Текущий
символ ) - 41.
Текущий
символ - 32.
Текущий
символ 3 - 51.
ABS - проверка
на Целое Без
Знака с цифры
3.
Текущий
символ , - 44.
Текущий
символ 5 - 53.
ABS - проверка
на Целое Без
Знака с цифры
5.
Текущий
символ 6 - 54.
Текущий
символ , - 44.
Текущий
символ 1 - 49.
ABS - проверка
на Целое Без
Знака с цифры
1.
Текущий
символ NULL - 0.
ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
Листинг
программы.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
// FILE
"KURSOVIC.CPP".
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
// ВАРИАHТ
# 2.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
// Арифметический
оператор условного
перехода языка
FORTRAN.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
// Кафедpа :
АСУ.
// Гpуппа :
А-513.
// Студент :
Бойко Константин
Анатольевич.
//
Пpеподаватели
: кандидат
технических
наук, доцент Шоpников
Юpий Владимиpович,
// ассистент Панова
Веpа Боpисовна.
// Дата :
30 апреля 1997г.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
//
Заголовочные
файлы.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
#
include
#
include
#
include
#
include
# include
"keyboard.h"
#
include
# include
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
// Константы.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
#
define FILE_NAME "TEXT.TXT"
#
define YES 1
# define NO 2
# define OK 3
//# define TEST
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
// Глобальные
переменные.
//ѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ
char
file1[22][60]; // Массив строк.
char
mes[22][30][50]; // Массив
сообщений об
ошибках.
char
bufer[4096]; // Снимок с
экрана.
int
com=0; // Показатель
: откомпилирован
файл или нет.
int
pos=2; // Текущая позиция
в строке.
char
string[80]; // Текущая
строка файла.
char nx; //
Текущий символ
в строке.
int e1=0; //
Счетчик страниц
массива собщений
об ошибках.
int e2=0; //
Счетчик строк
в странице.
int l=0; //
Счетчик меток.
FILE*
fl=fopen("MESSAGE.TXT","wt"); // Файл
с сообщениями
об ошибках.
В испанском языке в роли придаточного условного широко употребляются абсолютные инфинитивные конструкции, оформляемые как простыми, так и сложными инфинитивами с предлогами a и de.
Лексикология изучает вопросы происхождения и формирования лексики современного русского языка определяет место слова в лексической системе, а также в системе функциональных стилей современного русского.
Воссоздание процесса взаимосвязи между ценой на минуту разговора и уровнем ДТП по причине разговора по телефону за рулем. Уравнение обратно пропорциональной зависимости данной модели. Построение и описание графика зависимости исследуемых переменных.
Анализ разброса цен на услуги сотовой связи и качества работы операторов. Зависимость между ценой минуты разговора и прибылью сотового оператора, соотношение предельного дохода и предельных издержек. Экономический эффект возможности увеличения прибыли.
Нижегородский Технический Университет Институт Радиотехники и Информационных Технологий Кафедра «Прикладная Математика и Информатика» Отчёт по лабораторной работе №2
Содержание Задание 1. Вычисление значения арифметического выражения Задание 2. Использование условного оператора Задание 3. Использование циклических структур Задание 4. Работа с двумерными массивами Задание 5. Использование процедур Задание 6. Текстовый файл
Принцип работы основных операторов языка программирования Turbo-Paskal: оператор присваивания, выбора Case, безусловного перехода, цикла, уловный, составной. Формальное описание и вызов функции и процедуры. Требования к списку фактических параметров.
Министерство науки, высшей школы и технической политики Российской Федерации. Новосибирский Государственный Технический Университет. Курсовая работа по системному программированию.
Построение формального языка WHILE( , ...])>]; WHILE - входной терминальный символ - условное выражение - некоторая функция, которая может отсутствовать
Министерство науки, высшей школы и технической политики Российской Федерации. Новосибирский Государственный Технический Университет. Курсовая работа по системному программированию.
Отличия языков C и Fortran. Размещение данных в среде Fortran. Отображение типов данных языка Java в типы данных языка Fortran. Вызов Fortran-подпрограмм из Java среды. Описание практической части. Некоторые ограничения реализации приложения пользователя
Характеристики операторов языка Си. Операторы безусловного и условного перехода: if, if-else, if-else if. Оператор переключатель switch. Оператор цикла с предусловием while, постусловием do-while. Упрощение логических выражений, взаимозаменяемость циклов.
Условия и выражения, значением которых является величина логического (Boolean) типа. Вложенность условных операторов. Организация ветвлений в программах на Паскале, логические операции, их выполнение. Последовательности, связанные логическими операциями.
С.А. Григорьев Операторы в Паскале могут быть помечены. Метки - это идентификаторы, или целые числа от 0 до 9999, они могут записываться перед любым выполняемым оператором и отделяются от него двоеточием. Оператор может иметь любое количество меток. Все метки, использованные в программе, должны быть описаны в разделе описаний с ключевым словом LABEL.
Операторы Turbo Pascal Содержание 1. Операторы ввода и вывода информации. 2. Операторы языка ТР.7. 2.1 Составной оператор Begin ... end. 2.2 Условный оператор If.
Для программирования разветвлений в алгоритме чаще всего используется условный оператор if…then или if…then…else. Однако если путей выбора много, то запись алгоритма с помощью условного оператора становится сложной.
(парсинг) В информатике, синтаксический анализ— это процесс сопоставления линейной последовательности лексем (слов, токенов) языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево). Обычно применяется совместно с лексическим анализом. Синтаксический анализатор (парсер) — это программа или часть программы, выполняющая синтаксический анализ.
Место компилятора в программном обеспечении. Принципы работы и автоматизация построения синтаксического анализатора. Дерево разбора и его преобразование в дерево операций. Назначение и этапы семантического анализа. Идентификация языков программирования.
Лабораторная работа"++" Цель работы: познакомиться с работой условного оператора и оператора перехоlа. Изучить оператор выбора варианта. Научиться применять их при составлении программ.
Синтаксис языка РНР, его переменные и чувствительность их имен к регистру. Гибкость в отношении типов переменных, преобразование типов. Набор основных типов данных при работе с переменными. Методы передача переменных скрипту. Операторы цикла и выбора.
Computer Languages Essay, Research Paper Despite having very little knowledge of the world of computer programming, I have come to believe that C++ is currently the programming language of choice.
Лаболаторна робота №2 Тема: Програмування розгалужиних процесів на мові Паскаль. Мета:Навчитися складати програми задач, використовуючи оператори розгалуження.
Лаболаторна робота №3 Тема: Організація циклів та масивів на мові Паскаль. Мета: Навчитись розвязувати задачі з циклом, працювати з масивами. Теоретичні відомості.