Описание синтаксиса и семантики языка 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Описание синтаксиса и семантики языка



 

Понятие языка

Язык — это заданный набор символов и правил, установленные в различные комбинации этих символов между собой, для записи осмысленных текстов.

Алфавит — счетное множество допустимых символов языка — V.

Цепочка символов α является цепочкой над алфавитом α(V), если в неё входят только символы, принадлежащие множеству символов V.

Язык L над алфавитом V — L(V) это некоторое счетное подмножество цепочек конечной длины из множества всех цепочек над алфавитом V.

Цепочку символов, принадлежащую заданному языку, называют предложением.

Язык можно задать 3 способами:1)перечисление всех допустимых цепочек; 2)указание способа порождения предложений языка (грамматика); 3)определение метода распознавания языка (распознаватель, автомат)

Лексика — совокупность слов (словарный запас).

Синтаксис — набор правил, определяющий допустимые конструкции языка (определяет форму языка).

Семантика — раздел языка, определяющий значение предложений языка (определяет содержание языка).

Часто формальные языки лишены смысла.

 

ЗАПИСЬ ГРАММАТИКИ В ФОРМЕ БЭКУСА-НАУРА

 

Данная форма записи предполагает:

1)α→β1, α→β2, …, α→βn

α→β1| β2|… |βn

2)все нетерминальные символы заключаются в угловые скобки <A>

 

Алфавит нормальных форм Бэкуса-Наура состоял из символов алфавита исходного языка, к которым добавлялись символы '|', '::=' и названия синтаксических категорий, заключённые в угловые скобки. Определение синтаксической категории начинается с её имени (в угловых скобках), за которым следует символ '::=' и перечень вариантов структуры относящихся к этой категории цепочек. Семантика символа '|' аналогична семантике союза 'или', символ '::=' соответствует словосочетанию 'определяется как'.

 

Пример. Приведём нормальные формы Бэкуса-Наура простейшего арифметического языка, описанного в примере 2 пункта 1:

 

        <цифра>::=0|1|2|3|4|5|6|7|8|9

 

    <число>::=<цифра>|<цифра><число>

 

 <сумма>::=<число>+<число>|<число>+<сумма>

 

    Определения синтаксических категорий <число> и <сумма> являются рекурсивными — имя определяемой синтаксической категории стоит слева и справа от знака '::='. Чтобы отнести символьную цепочку к семантической категории <число>, достаточно убедиться, что все её символы являются цифрами. Рассмотрим алгоритм распознавания символьных цепочек категории <сумма>. Такая цепочка обязательно содержит знак '+'. Первое вхождение знака '+'делит цепочку A на две части: A = B + C. Часть B должна быть числом, если C тоже число, то A – сумма. В том случае, когда часть C не является числом, ищем в ней первое вхождение знака '+' и повторяем процедуру. Количество знаков '+' в проверяемых цепочках всё время уменьшается, поэтому рано или поздно мы получим цепочку, не содержащую знаков '+'.

Структура автомата. Автомат состоит из двух компонентов: входа и системного блока.

ОПИСАНИЕ РАБОТЫ АВТОМАТА

 

Время работы автомата разделено на такты (интервалы). На вход автомата поступает символьная цепочка; в начале каждого такта автомат читает очередной символ цепочки, состояние автомата в конце такта однозначно определяется прочитанным символом и состоянием автомата в конце предыдущего такта. Автомат можно задать с помощью функции z = f (x, y), аргументами которой служат символ x, прочитанный в начале такта, и состояние системного блока в конце предыдущего такта y, а значением — состояние z системного блока в конце текущего такта.

 

Распознавание конструкций языка автоматом. Множество S всех возможных состояний системного блока разбивают на два подмножества, U и V. Считается, что автомат распознаёт конструкции языка, если системный блок переходит в состояние, принадлежащее подмножеству U, когда прочитанная часть символьной цепочки является конструкцией языка, в противном случае это состояние принадлежит подмножеству V.

 

Пример. В примере пункта 5.5 мы описали формальную грамматику простейшего языка арифметики, в которой три нетерминальных символа. Построим автомат, распознающий конструкции этого языка. В начале работы автомата системный блок будет находиться в состоянии <начало>. Автомат читает цепочку символов, поступающих на его вход:

если она является набором цифр, системный блок переходит в состояние <прочитано число>;

если она является суммой целых неотрицательных чисел, системный блок переходит в состояние <прочитана сумма>;

если прочитан начальный фрагмент суммы целых неотрицательных чисел, завершающийся знаком плюс, системный блок переходит в состояние <прочитан плюс>;

если прочитанная цепочка не может быть начальным фрагментом суммы целых неотрицательных чисел, то системный блок переходит в состояние <ошибка>.

 

Состояния

Символы, поступающие на вход

Цифры 0, 1, 2, 3 4, 5, 6, 7, 8, 9 Знак плюс ('+') Символ, отличный от цифр 0, 1, 2, 3 4, 5, 6, 7, 8, 9 и знака плюс
<начало> <прочитано число> <ошибка> <ошибка>
<прочитано число> <прочитано число> <прочитан знак плюс> <ошибка>
<прочитан знак плюс> <прочитана сумма> <ошибка> <ошибка>
<прочитана сумма> <прочитана сумма> <прочитан знак плюс> <ошибка>
<ошибка> <ошибка> <ошибка> <ошибка>

Работу автомата можно описать с помощью следующей таблицы:

 

 

Составим программу, которая реализует автомат, распознающий конструкции простейшего языка арифметики:

 

/* программа реализует автомат, распознающий конструкции простейшего языка арифметики;

стандартный канал ввода должен быть соединён с текстовым файлом;

если цепочка символов, поступившая на вход, является суммой целых неотрицательных чисел, программа выдаёт сообщение YES, в противном случае программа выводит на экран сообщение NO */

 

#define BEGIN     0

#define NUMBER 1

#define AND_PLUS  2

#define SUMMA    3

#define ERROR    4

/* именованные константы BEGIN, NUMBER, AND_PLUS, SUMMA, ERROR представляют состояния системного блока автомата */

 

#include <stdio.h>

 

main()

{

int c, state = BEGIN; /*переменная c служит буфером, в неё заносится символ, поступивший в стандартный канал ввода, state — флаг, в ней содержится значение текущего состояния системного блока автомата */

 

while (((c = getchar())!= EOF) && (state!= ERROR))

/* программа читает один за другим символы из стандартного канала ввода, цикл завершается, когда будут прочитаны все символы или системный блок автомата перейдёт в состояние ERROR */

 

    if (('0' <= c) && (c <= '9'))

    /* если прочитана цифра*/

 

              switch (state)

                       {case BEGIN:

                                 state = NUMBER;

                                 break;

                       case AND_PLUS:

                                 state = SUMMA;

                                 break;

                       }

 

              else

 

                       if ('+' == c)

                       /* если прочитан знак плюс */

 

                                 switch (state)

                                          {case NUMBER: case SUMMA:

                                                   state = AND_PLUS;

                                          default:

                                                   state = ERROR;

                                          }

 

                       else

                                 state = ERROR;

 

if (SUMMA == state)

    printf (“YES”);

 

    else

              printf (“NO”);

}

 

КОНЕЧНЫЙ АВТОМАТ

 

 Автомат называется конечным, если конечно множество состояний его системного блока. Линейный язык обладает регулярной формальной грамматикой в том и только в том случае, когда можно построить конечный автомат, распознающий его конструкции.

 

 

Заключение:

В результате выполнения лабораторной работы №3, был разобран процесс распознавания конструкция языка с регулярной грамматикой. Были даны определения: языка, алфавита, синтаксиса, семантики. Также, была рассмотрена запись грамматики в форме Бэкуса-Наура. Было проведено описание работы автомата, а также разработана программа, которая реализует автомат, распознающий конструкции простейшего языка арифметики.

 

 

ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

 

Акулов О. А. Информатика. Базовый курс: учебное пособие // О. А. Акулов, Н. В. Медведев. – М.: Наука, 2005.- 552 с.

 

Дополнительная литература

Симонович С. В. Информатика. Базовый курс: учебное пособие/ Под ред. С. В. Симоновича. – Спб.: Питер, 2004. – 640 с.

 

 

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЕГАЗОВЫЙ УНИВЕРСИТЕТ»

 

Институт кибернетики, информатики и связи

Кафедра кибернетических систем

 

ОТЧЁТ О ВЫПОЛНЕННОЙ ЛАБОРАТОРНОЙ РАБОТЕ № 4

 

Дисциплина «Информационные технологии»

Направление 220200 Автоматизация и управление, специальность 220201 Управление и информатика в технических системах

 

Тема. Разработка методического проектирования процесса проектирования СУ

 

Выполнил:         

студент группы УИТС-08-1

Логинов А.В.

 

Проверил          

Ковалёв П. И.        

     

 

 

Тюмень 2012

Цель: Овладение навыками разработки методическое обеспечение проектирования САР.

 

Задание: Составить описание процесса проектирования СУ следующим объектам, состоящих из резервуара и насоса. В начальный момент времени в резервуаре содержится А м  жидкости. В момент времени Б открывается кран, из которого каждую сек. вытекает С м жидкости. Когда в резервуаре остается меньше Т м , включают насос. Насос накачивает в резервуар Т м /сек.  После того, как кол-во жидкости достигает G м жидкости, насос отключают.

Процесс проектирования включает в себя:

1) Законы, регулирующие разработку технических систем.

2) Проблемы защиты интеллектуальной собственности: как составляется патент, как осуществляется поиск патентов.

3) Документы, регламентирующие состав, содержание и структуру проекта автоматизированной системы.

4) Разработка проекта RAD-технологии посредством Rockwell Software.

Разработка интерфейса автоматизированной системы средствами RSView32 Works. Это инструментальная среда для разработки и исполнения человеко-машинного интерфейса, ориентированное на ОС Microsoft Windows. RSView32 Works реализует концепцию быстрой разработки приложения.

Для запуска программы заходим в меню Пуск/Rockwell Software/RSView32/ RSView32 Works/. После запуска открывается пустое окно программы.

Для создания нового проекта необходимо в главном меню «File» нажать кнопку нового проекта New Project.

Cистема создает папку проекта с именем my project, в этой папке содержится файл.rsv. Появляется окно Project Manager, оно включает две панели, левая – Edit Mode, в ней содержатся папки с редакторами (Systems, Graphics), а также окно Run Mode, при помощи которого запускается проект.

В самом начале проектирования целесообразно создать аргументы, иначе называемые тегами, которые присутствуют в проектируемой системе автоматического управления как связующее звено между управляющими элементами окна HMI и датчиками, а также исполнительными механизмами.

Работа с тегами в RSView32 осуществляется в окне Tag Database, для открытия которого необходимо в окне редактирования Edit Mode выбрать папку System и среди представленных подпунктов выбрать Tag Database.

Для создания аналогового тега необходимо указать имя тега в поле Name, в поле Type выбрать Analog, т.е. аналоговый. При необходимости можно задать описание тега в поле Description. Для указания диапазона значений тега используются поля Scale и Offset, при этом значения полей Minimum и Maximum следует оставить без изменения. После введения общей информации о теге необходимо указать источник данных создаваемого тега в Data Source. В качестве источника данных используется программа-эмулятор контроллера, которую следует запускать отдельно от RSView32 English. Для этого переходим в Пуск/Rockwell Software/RSView32/Animate. Затем, в Data Source в поле Type выберем Device, после чего в поле Node Name нажмём на кнопку «…». В открывшемся окне Node Browser для создания нового источника данных необходимо нажать кнопку Add, затем указать тип источника данных в поле Data Source, выбрав DDE Server. Далее, в открывшемся окне в поле Address необходимо указать тот источник данных из колонки Tagname программы Animate, который считается наиболее подходящим для создаваемого тега.

Для создания дискретного тега так же необходимо указать имя тега в поле Name, затем в поле Type выбрать Digital. В поле Offlabel указывается 0, что говорит о том, что контакт разомкнут а в поле Onlabel указывается 1, что говорит о том, что контакт замкнут. В качестве источника данных для дискретных тегов обычно используется Memory. В поле Initial Value указывается то значение тега, которое он будет принимать при запуске программы, т.е. 0 или 1.

Для создания мнемосхем необходимо в окне Edit Mode перейти в папку Graphics. Далее в открывшемся меню выбираем элемент Display.

На панели появляется окно проектирования с именем проекта. На нем при помощи панели инструментов создаем интерфейс оператора, который состоит из различных блоков, в частности отображение непосредственно агрегата, все необходимые для контроля технологического процесса приборы КИПиА и исполнительные механизмы.

Отрисовка мнемосхем осуществляется с помощью панели рисования Drawing Toolbox, содержащей набор элементарных графических элементов – примитивов (линия, полилиния, дуга, эллипс и др.), окно текстового ввода, текстовая метка, цифровое окно и т.д. Каждому такому элементарному объекту соответствует набор свойств, среди которых наиболее распространённые: цвет элемента, фона, толщина линий и т.д. Доступ к ним осуществляется через контекстное меню объекта, доступное по щелчку правой кнопки мыши.

За внесения в интерфейс оператора динамической составляющей отвечает анимация, которая изменяет атрибуты объекта в соответствии с выполнением каких-либо условий, либо изменением значения тега. Для настройки анимации необходимо выбрать объект, на который настраивается анимация. Затем в контекстном меню объекта выбрать Animation. Из представленного списка анимаций выбрать и настроить желаемую.

В качестве примера рассмотрим настройки анимации с использованием аналогового тега. Пусть имеется ёмкость, необходимо, чтобы уровень в ёмкости изменялся согласно аналоговому тегу Uroven. Для этого выберем красный прямоугольник, который условно будет являться уровнем. В списке меню Animation выберем Height. В открывшемся окне выберем тег, согласно которому будет изменяться уровень в ёмкости, в нашем случае это тег Uroven. Выбор тега осуществляется через кнопку Tags. В поле Anchor указывается часть прямоугольника, которая остается неподвижной. Так как уровень в ёмкости исчисляется от дна, то выбираем Bottom. В поле Vertical Change указываются пределы изменения высоты прямоугольника на экране.

Для создания анимации с использованием дискретного тега разместим на дисплее кнопку, изобразим насос и создадим тег памяти дискретного типа. Из библиотеки Buttons – Industrial разместим две кнопки, одну из которых будем использовать для пуска насоса, а другую для его останова. При этом кнопка пуска будет являться видимой в том случае, когда насос выключен, а кнопка останова будет видимой в том случае, когда насос включен. Для кнопки останова в поле анимации Touch в поле PressAction через кнопку «…» зададим команду Set. При этом потребуется указать тег состояния насоса, в нашем случае это тег Nasos. В поле «Set to» необходимо выбрать Value or Label и написать «0». Таким образом, мы создадим анимацию, которая позволяет при нажатии на кнопку устанавливать значение тега Nasos в «0». Далее, в поле анимации Visibility поставим на эту же кнопку условие видимости. Для этого пропишем следующее условие «If (Nasos == 1) Then 1 Else 0», а в поле «Expression True State» поставим галочку напротив «Visible». Таким образом, если значение тега состояния насоса будет равно «1», то условие в поле «Expression» будет выполняться и кнопка останова насоса будет видимой. Если же условие не будет выполняться, то кнопка будет невидимой. Аналогичные действия проделываем с кнопкой пуска насоса, но наоборот.

Таким образом, кнопками осуществляется запуск и останов насоса.

В случае если необходимо показать значение тега на мнемосхеме, например, отображение значений с датчиков, нужно воспользоваться объектом Numeric Display, имеющийся на панели рисования Drawing Toolbox. В окна настроек Numeric Display очень удобно создавать теги в процессе рисования дисплеев. Для этого можно воспользоваться кнопками New и Edit. В поле Expression есть возможность указывать различные сложные математические выражения. Для вывода на экран дробных чисел нужно указать соответствующий формат вывода в строке Format:Floating Point и количество разрядов общее и после запятой (Field Length и Decimal Places).

Для запуска проекта необходимо на закладке Run Mode менеджера проекта нажать на кнопку Run Project. Проект успешно запущен. Для останова проекта используем кнопку Stop Project.

Разработка программы автоматизированной системы средствами RSLogix 500. Для запуска ПО нужно выполнить следующую последовательность действий: открываем Пуск/Rockwell Software/ RSLogix English/ RSLogix English/.

На панели инструментов заходим в главное меню “File”, далее New project. Cистема создает файл.rss. Открываются два окна:

· Окно инструментов;

· Главное окно проектирования.

В окне инструментов заходим в папку Program Files.

Далее открываем файл LAD1.  В главном окне проектирования появляются ранги, которые являются в свою очередь основой для построения тела программы RSLogix English.

Для написания кода программы необходимо двойным нажатием мыши вызвать поле редактирования программного кода. Его написание и редактирование производится посредством ввода с клавиатуры специальных инструкций, также используется манипулятор «мышь», при помощи которого происходит перемещение инструкций с панели инструкций, а также выделение программного кода, копирование, вставка и так далее.

После написания и редактирования кода программы нам необходимо проверить его на ошибки методом «компиляции». В RSLogix English данная процедура реализуется посредством нажатия на панели инструментов кнопки Verify Project.

По окончании процесса компиляции, когда мы убедились, что код программы написан безошибочно, запускаем проект, иначе, при наличии ошибок, исправляем код программы.

Запуск проекта осуществляется нажатием на панели инструментов выпадающего меню «Offline» с последующим выбором функции «Download».

После выполнения функции «Download» происходит процесс обработки и сохранения программного кода.

По окончании процесса обработки используя вышеупомянутое нисходящее меню, в котором необходимо вызвать функцию «Run».

По окончании всех вышеописанных манипуляций наш проект успешно запущен.

 

Заключение: В ходе выполнения лабораторной работы были освоены навыки работы с программным обеспечением Rockwell Software RSView32 Works и RSLogix English, также овладел навыками разработки методического обеспечения проектирования системы автоматического регулирования.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 81; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.150.89 (0.07 с.)