Научная статья на тему 'Застосування системи алгоритмічних алгебр для граматичного аналізу символьних обчислень виразів логіки висловлювань'

Застосування системи алгоритмічних алгебр для граматичного аналізу символьних обчислень виразів логіки висловлювань Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
328
32
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
текст / україномовний / алгоритм / контент-моніторінг / ключові слова / лінгвістичний аналіз / синтаксичний аналіз / породжувальні граматики / структурна схема речення / інформаційна лінгвістична система / text / a Ukrainian / algorithm / content monitoring / keywords / linguistic analysis / parsing / generative grammar / structured scheme sentences / information linguistic system / текст / украиноязычный / алгоритм / контент-мониторинг / ключевые слова / лингвистический анализ / синтакси- ческий анализ / порождающих грамматики / структурная схема предложения / информационная лингвистическая система

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Литвин В. В., Бобик І. О., Висоцька В. А.

Розроблено архітектуру та реалізовано програмну систему граматичного аналізу схем системи алгебраїчних алгебр та їх інтерпретації. Програмна система дає змогу автоматизовано генерувати програми за такими створеними схемами та їх відлагоджувати у відповідних схемах. Визначено чіткий розподіл системи алгебраїчних алгебр на окремі модулі, кожен з яких характеризуватиметься своїм функціональним навантаженням. Використано методи синтаксичного аналізу для розроблення та подання граматики таких схем. Реалізовано автоматичне їх перетворення в спискову форму. Розроблено машини системи алгебраїчних алгебр як абстрактний механізм інтерпретації граматики засобами синтаксичного аналізу. Словник V складається з скінченої не порожньої множини лексичних одиниць. Вираз над V є ланцюжком скінченої довжини лексичних одиниць із V. Порожній ланцюжок, який не містить лексичних одиниць, позначимо через Λ. Множина всіх лексичних одиниць над V позначимо V ′. Мова над V є підмножиною V′. Мову задають через множину всіх лексичних одиниць мови або через означення критерію, якому повинні задовольняти лексичні одиниці, щоб належати мові. Ще є один важливий спосіб задати мову – через використання породжувальної граматики. Граматика складається з множини лексичних одиниць різного типу та множини правил або продукцій побудови виразу. Граматика має словник V, який є множиною лексичних одиниць для побудови виразів мови. Деякі лексичні одиниці словника (термінальні) не можуть замінятися іншими лексичними одиницями. Текст реалізує структурно подану діяльність, що передбачає суб’єкт і об’єкт, процес, мету, засоби і результат, які відображаються в змістовно-структурних, функціональних, комунікативних показниках. Одиницями внутрішньої організації структури тексту є алфавіт, лексика (парадигматика), граматика (синтагматика), парадигми, парадигматичні відношення, синтагматичні відношення, правила ідентифікації, висловлювання, між фразова єдність та фрагменти-блоки. На композиційному рівні виділяють речення, абзаци, параграфи, розділи, глави, підглави, сторінки тощо, які, крім речення, побічно пов’язані з внутрішньою структурою, тому не розглядаються. За допомогою бази даних (бази термінів/морфем і службових частин мови) та визначених правил аналізу тексту виконують пошук терміну. Синтаксичні аналізатори працюють в два етапи: ідентифікують змістовні лексеми та створюють дерево розбору.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

APPLICATION OF ALGORITHMIC ALGEBRA SYSTEM FOR GRAMMATICAL ANALYSIS OF SYMBOLIC COMPUTATION EXPRESSIONS OF PROPOSITIONAL LOGIC

The architecture and implemented a software system parsing schemes of algebraic algebra and their interpretation. The software system allows to generate automated in such schemes create a program and debug the relevant schemes. A clear division of algebraic algebra into separate modules is defined, each of which will be characterized by its functional load. The methods of parsing for the development and presentation of grammar such schemes are used. Automatic transforming it in a list form is implemented. A machine system of algebraic algebra as an abstract interpretation of the mechanism of grammar parser is defined. The vocabulary V consists of finite not empty set of lexical units. The expression on V is a finite-length string of lexical units with V. An empty string does not contain lexical items and is denoted by Λ. The set of all lexical units over V is denoted as V ′. The language over V is a subset V ′. The language displayed through the set of all lexical units of language or through definition criteria, which should satisfy lexical items that belong to the language. Another is one important method to set the language through the use of generative grammar. The grammar consists of a lexical units set of various types and the rules or productions set of expression constructing. Grammar has a vocabulary V, which is the set of lexical units for language expressions building. Some of lexical units of vocabulary (terminal) can not be replaced by other lexical units. The text realizes structural submitted activities through provides subject, object, process, purpose, means and results that appear in content, structural, functional and communicative criteria and parameters. The units of internal organization of the text structure are alphabet, vocabulary (paradigmatics), grammar (syntagmatic) paradigm, paradigmatic relations, syntagmatic relation, identification rules, expressions, unity between phrasal, fragments and blocks. On the compositional level are isolated sentences, paragraphs, sections, chapters, under the chapter, page etc. that (except the sentence) indirectly related to the internal structure because are not considered. With the help of a database (database for terms/morphemes and structural parts of speech) and defined rules of text analysis searching terms. Parsers operate in two stages: lexemes content identifying and a parsing tree creates.

Текст научной работы на тему «Застосування системи алгоритмічних алгебр для граматичного аналізу символьних обчислень виразів логіки висловлювань»

ПРОГРЕСИВН1 ШФОРМАЦ1ЙШ ТЕХНОЛОГИ

ПРОГРЕССИВНЫЕ ИНФОРМАЦИОННЫЕ

ТЕХНОЛОГИИ

PROGRESSIVE INFORMATION _TECHNOLOGIES_

УДК 004.9

Литвин В. В.1, Бобик I. О.2, Висоцька В. А.3

1Д-р техн. наук, професор, завдувач кафедри «1нформаЦйН системи та мереж» Нацонального унверситету

«Львiвська полтехнка», Львiв, Украна 2Канд. физ.-мат. наук, доцент кафедри «ВищоТ математики» Национального унверситету «Львiвська полтехнка»,

Львiв, Украна

3Канд. техн. наук, доцент кафедри «1нформацйн системи та мереж» Национального унверситету «Льввська

полтехнка», Львiв, Украна

ЗАСТОСУВАННЯ СИСТЕМИ АЛГОРИТМ1ЧНИХ АЛГЕБР ДЛЯ ГРАМАТИЧНОГО АНАЛ1ЗУ СИМВОЛЬНИХ ОБЧИСЛЕНЬ ВИРАЗ1В _ЛОГ1КИ ВИСЛОВЛЮВАНЬ_

Розроблено арх^ектуру та реалiзовано програмну систему граматичного аналiзу схем системи алгебра'чних алгебр та ïx штерпретаци. Програмна система дае змогу автоматизовано генерувати програми за такими створеними схемами та ïx вщлагоджувати у вщповщних схемах. Визначено ч™ий розподш системи алгебраïчниx алгебр на окремi модуш, кожен з яких характеризуватиметься своïм функщональним навантаженням. Використано методи синтаксичного аналiзу для розроблення та подання граматики таких схем. Реалiзовано автоматичне 'х перетворення в спискову форму. Розроблено машини системи алгебраïчниx алгебр як абстрактний мехашзм штерпретаци граматики засобами синтаксичного аналiзу. Словник V складаеться з скшчено'' не порожньо'' множини лексичних одиниць. Вираз над V е ланцюжком скшчено'' довжини лексичних одиниць iз V. Порожнiй ланцюжок, який не мютить лексичних одиниць, позначимо через Л. Множина вах лексичних одиниць над Vпозначимо V'. Мова над Vе шдмножиною V'. Мову задають через множину вах лексичних одиниць мови або через означення критерто, якому повиннi задовольняти лексичш одиницi, щоб належати мовг Ще е один важливий споаб задати мову - через використання породжувально'' граматики. Граматика складаеться з множини лексичних одиниць рiзного типу та множини правил або продукцш побудови виразу. Граматика мае словник V, який е множиною лексичних одиниць для побудови виразiв мови. Деяга лексичш одинищ словника (термшальш) не можуть замiнятися iншими лексичними одиницями. Текст реалiзуе структурно подану дiяльнiсть, що передбачае суб'ект i об'ект, процес, мету, засоби i результат, якi вiдображаються в змютовно-структурних, функцюнальних, комунiкативниx показниках. Одиницями внутршньо'' оргашзаци структури тексту е алфав^, лексика (парадигматика), граматика (синтагматика), парадигми, парадигматичш вiдношення, синтагматичнi вiдношення, правила щентифжаци, висловлювання, мiж фразова едшсть та фрагменти-блоки. На композицiйному рiвнi видiляють речення, абзаци, параграфи, роздши, глави, пiдглави, сторiнки тощо, якi, крiм речення, побiчно пов'язаш з внутрiшньою структурою, тому не розглядаються. За допомогою бази даних (бази термжв/морфем i службових частин мови) та визначених правил аналiзу тексту виконують пошук термiну. Синтаксичш аналiзатори працюють в два етапи: щентифжують змiстовнi лексеми та створюють дерево розбору.

Ключовi слова: текст, укра'номовний, алгоритм, контент-мошторшг, ключовi слова, лiнгвiстичний аналiз, синтаксичний аналiз, породжувальнi граматики, структурна схема речення, шформацшна лiнгвiстична система.

НОМЕНКЛАТУРА

CAA - системи алгорштшчних алгебр;

1С - шформацшна система;

ООП - об'eктно-орieнтоване програмування;

ПО - предметна область;

LL(k) граматика яке тдмножина контекстовiльних граматик для LL-аналiзатора як низкосхiдного алгоритму синтаксичного разбору; цифра k - кiлькiсть лексем для розбору;

© Литвин В. В., Бобик I. О., Висоцька В. А., 2016

DOI 10.15588/1607-3274-2016-4-10

А - команда типу тepмiнaл або семантичш ^оце^-pи пepeтвоpeння CAA-сxeми у фоpмyлy цieï сxeми;

V - умова виконання команди;

В - команда типу нeтepмiнaл;

К - команда, яка фоpмye лопчний peзyльтaт пepeвipки у вигляд1 глобaльноï логiчноï змiнноï CAA-машини;

L - команда пepeсyвae вказ1вник сxeми на кшьюстъ символ1в в текста команди у випадку зб1гу його з вxiдним потоком;

I - забезпечуе вiзуалiзацiю тексту повiдомлення на екраш у bíkhí повiдомлень САА-машини;

W - команда обчислення складено! лопчно! умови в LL(k)-граматицi або САА-схемах;

Е - лопчна константа, яка тотожно гстиннш логiчнiй умовi;

X - забезпечуе послвдовне виконання команд автомата;

ДНФ - диз'юнктивна нормальна форма;

БД - база даних;

DFD - дiаграма потокiв даних (англ. Data Flow Diagram);

Д - установку шдексу масиву i = 1;

A2 - перестановка мюцями елементiв масиву з шдек-сами i, i +1;

A3 - збiльшення iндексу масиву на i на одиницю;

ai - умова виконання операторiв, де ai = 1, якщо iндекс масиву дорiвнюе п -1, де п - розмiрнiсть масиву, ai = 0 в шшому випадку;

a 2 - умова виконання операторiв, де a 2 = 0, якщо елемент масиву з шдексом i бшьше елемента масиву з шдексом i +1, a 2 = 1 в протилежному випадку.

ВСТУП

Алгебра алгорштшв дослiджуе властивостi алгоримв [1-2]. Теорiя САА вивчае i будуе алгебри алгоритмiв або алгоритшчш алгебри [3-4]. Основними поняттями алгебри алгорштшв е операцй над множинами, булевi операцй, предикати, функцп й оператори; бiнарнi i n-арш вщно-шення, еквiвалентнiсть, частково i щлком упорядкованi множини; графи-схеми й операцй над графовими структурами; операцй сигнатури САА, аксiоми i правила виз-начення властивостей програм на основi стратеги згор-тання, розгортання i !х комбiнацiй; методи синтаксичного аналiзу структурних програм i символьне опрацювання

[5-9]. Операцй алгебри задовольняють аксiоматичнi зако-ни асощативноста, щемпотентносп, комутативноста, вик-лючення третього i суперечностi [1-4]. Застосування САА найчастше провадиться в теорп секвенщйних алгоритмiв i проектуваннi 1С; редактс^ формул алгоритмiв i аналiз синтаксису та семантики алгебри алгорштшв-секвенцш; засобах е^валентних перетворень алгоритмiв; методах тдвищення ефективностi математичного моделювання алгоритмiв 1С; принципах побудови електронно! бiблiоте-ки абстрактних алгоритмiв [10-14]. Практичним результатом дослвджень САА е побудова орипнальних шструмен-тальних систем проектування програм на основi сучас-них засобiв пiдтримки ООП (Rational Rose), в тому чи^ i для граматичного аналiзу символьних обчислень виразiв логiки висловлювань на основi синтаксичного аналiзу тек-стових масивiв даних [10-14]. 1 ПОСТАНОВКА ЗАДАЧ1

Функщональшсть системи синтаксичного аналiзу складаеться з таких складових:

- механiзм синтаксичного аналiзу та вiдлагодження опрацьовано! САА-схеми у виглядi абстрактно! САА-машини;

- опис граматики САА-мови та формул САА-схеми, перетворення граматики у спискову форму подання;

- генеращя коду за САА-схемою, результатом чого е формульне подання САА-схеми;

- мехашзм штерпретацп формул САА-схеми, виклик та реалiзацiя семантичних процедур.

Для цих задач створена абстрактна САА-машина з певним набором команд для задач синтаксичного аналь зу. Через аналопю в поданнi ЬЬ(к)-граматик та формул САА-мови такий мехашзм можна використати в якост не лише генератора коду, але й для тестового вдаагод-ження САА-програм. На рис. 1 подана схема функщо-нування САА-машини в процем синтаксичного аналiзу

Рисунок 1 - Схема функцюнування САА-машини

САА-схеми та побудови И формули. По вхiднiй с^чщ (на рис. 1 схема сортування бульбашка) пересуваеться вказiвник вхiдного потоку, його зсув задаеться командою Ь-граматики. ЬЬ(к)-граматика для опису синтаксису САА-схем е керуючою програмою для САА-машини. Попередньо, до початку синтаксичного аналiзу та транс-ляцп, САА-машина перетворюе описану граматику у спискову форму. По ЬЬ(к)-граматищ рухаеться вказiв-ник граматики, його пересування визначаеться командами послщовного виконання команд САА-машини, або залишаеться на мiсцi при щентифжацп В. Мехашзм виконання команд типу В е рекурсивним, що реалiзують через використання стеку команд САА-машини. На кож -ному крощ САА-машина обирае з граматики чергову 11 команду i виконуе 11. У випадку команд типу А САА-ма-шина здiйснюе виклик окремого компонента, що задае реалiзацiю цих семантичних процедур у виглядi процедур та функцш мови програмування, на якiй реалiзова-на вiдповiдна САА-машина. Семантичнi процедури ге-нерують формулу САА-схеми у вщждадност з деревом виводу схеми i записують цю формулу у вихщну стрiчку.

Описаний процес синтезу прорами в деякш мовi програмування за САА-схемами тдтримуеться автоматично при наявноста:

- абстрактно! САА-машини iз механiзмом синтаксичного аналiзу методом рекурсивного спуску;

- перетворювача описано! граматики згiдно САА-схем у спискову форму;

- штерпретатор граматики мови зпдно САА схем;

- штерпретатор граматики формул зпдно САА-схем;

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

В основi проектування 1С лежить моделювання ПО. Для отримання адекватного проекту 1С у виглядi систе-ми правильно працюючих програм, необхiдно мати цтсне, системне уявлення моделi, яке вдабражае всi аспекти 11 функцiонування. При цьому пiд моделлю ПО е система, яка iмiтуе структуру або функцюнування досл-щжувано1 ПО i вiдповiдае основнiй вимозi - бути адекватною цш областi. 1нформацшна модель системи сим-вольних обчислень в лопщ висловлювань повинна вмгги:

- розпiзнавати вирази логiки висловлювань;

- здшснювати еквiвалентнi перетворювання над ними, генеруючи покроковий звiт щодо процесу перетворення;

- у випадку некоректно введених даних генерувати звгги про помилки з поясненнями;

- збершати статистику виконань програми;

- вщображати результати роботи користувачу у зро-зумiлому для нього виглядг

2 ОГЛЯД Л1ТЕРАТУРИ

Синтаксис структурованих та змiстовних текстових масивiв даних реалiзують через сукупнiсть правил для побудови формул та розтзнавання правильних формул серед послiдовностей символiв [1-4]. Для системи сим-вольних обчислень ум операцп логiки висловлювань, о^м заперечення, е бiнарними. На цьому i базуеться синтаксичний аналiзатор. Синтаксичний аналiз реалiзу-ють через процес аналiзу вхщно1 послiдовностi символiв з метою розбору граматично1 структури в^пов^но до

задано! формально! граматики. Синтаксичний аналiза-тор (або парсер, англ. parser) е програмою або части-ною програми для виконання синтаксичного аналiзу текстових масивiв даних [10-14].

Пщ поняттям синтаксичного розбору розушють роз-биття тексту на складовi частини мови з фжсащею !хшх форм, призначення i синтаксичного зв'язку з iншими частинами. Це визначаеться на етат аналiзу вiдмiнкiв i позицiювання частин вщповщно! мови, яю е складними для формалiзацil у флективних мовах, наприклад таких, як укра!нська.

Термшальний ланцюжок як речення таких мов розiб-рати програмно нелегко. Наприклад, у структурi людсь-ко! мови е суттевi неоднозначностi (особливо в роз-мовнiй), тобто слова i вирази, якi передають змют у ве-ликiй кiлькостi варiантiв, але тiльки одне зi значень доречне в конкретному випадку. Устх вибору правильного варь анту переважно залежить вщ багатьох факторiв контекстного зм^ту, i передбачити !х всi неможливо. Важко пiдготувати формальш правила для опису неформально! поведшки. Хоча iснують i строп правила, множина яких утворюе базу граматики як основи синтаксичного аналiзатора. Шд час синтаксичного аналiзу текст пере-творюють у структуру даних, найкраще для подальшого опрацювання - в дерево зпдно синтаксично! структури вхщно! послщовностг Зазвичай синтаксичнi аналiзатори працюють в три етапи: iдентифiкують змiстовнi лексеми або токени (лексичний аналiз або токешзащя), створю-ють дерево розбору та аналiзують дерево (парсер).

Токеном е послщовшсть одного чи бшьше символiв, якi видiляють як атомарний об'ект. Видiляють токени на осжда базових правил лексичного аналiзатора (лексера), яю вiдрiзняються в залежностi вщ областi застосування [10-14]. Токени часто класиф^ують за розташуванням символiв у послщовност знакiв чи контексту в потощ даних. Це не видшення групи символiв, якi обмеженнi роздшовими знаками з обох сторiн (пробшами чи знаками пунктуацп). Токени визначають правилами лексера i включають граматичнi елементи мови (категорп iмен-никiв, дiеслiв, прикметникiв або знаюв пунктуацп), що використовують в потощ даних, в подальшому опрацю-ванш токенiв синтаксичним аналiзатором або шшими функцiями в програмi. До завдань лексичного аналiзу належать:

1. Перетворення набору символiв тексту у по-слщовшсть токенiв.

2. Видiлення кожного токену як лопчно! частини тексту (ключове слово, iм'я змшно!, знак пунктуацп тощо).

3. Встановлення вщпов^ност мiж токеном i лексемою - конкретний текст токена («for» «variable», «;» тощо).

4. Видшення додаткових атрибутав токена (наприклад, значення змшно!).

5. Формування послщовност токенiв на виходi для парсера в якост вхiдних даних.

Лексичний аналiзатор зазвичай нiчого не робить з комбшащею iдентифiкованих токенiв. Для прикладу, ти-повий лексичний аналiзатор розпiзнае дужки як знаки, але не перевiряе, чи кожному символу вщповщае iнший символ. Це завдання е для парсера.

3 МАГЕРЬАЛИ I МЕТОДИ

Метою розробки системи е створення додатку для спрощення формул в логiцi висловлювань (рис. 2). Ум задачi 1С подiленi на таю групи: отримання вхiдних даних вiд користувача та приведення 1х до вигляду, зрозумiлого системц видшення i категоризацiя лексем виразiв лопки висловлювань; перевiрка синтаксично! валiдностi виразiв логiки висловлювань; зведення формул до нормально! форми та 1х мiнiмiзацiя; порiвняння перетворених формул на е^валентшсть; генерування результатiв та вщоб-раження 1х користувачу. Кожна задача е самостшною програмною одиницю i реалiзована модульно. В залеж-ност вiд кiлькостi видiлених рiвнiв операцш, 1С подшяеть-ся на тдсистеми (рис. 3):

- пiдсистема вщображення даних, яка забезпечуе взае-модю користувача з 1С: введення вхщних даних чи керу-ючих команд, виведення i форматування результату;

- тдсистема ядра системи, яка реалiзуе основну лог-iку САА, тобто множину функцiй, що аналiзують та пе-ретворюють вхiднi данi, виконують обчислення i форму-ють результат;

- пiдсистема управлшня даними, яка забезпечуе збе-ршання даних в БД та доступ до них.

Ядро 1С складаеться з таких основних кламв (рис. 4).

1. Клас Main е основним та мае мехашзм зчитування вхщних даних вiд користувача. З цього класу створюють i викликають iншi класи в порядку застосування перетво-рень вхщно! стрiчки. Присутнiй метод isDNF з тае! причини, що вихiдний вираз тсля синтаксичного опрацюван-ня може бути зразу заданий у виглядi ДНФ, вщждадно вiдпадае потреба створювати об'ект класу DNFMaker, що

значно зекономить ресурси. Осюльки цей клас е голов-ним, його зв'язки е суто асощативними, яю служать для взаемозв'язкiв мiж класами, е базовим семантичним еле-ментом i структурою для багатьох типiв з'еднань мiж об'ектами. Асощацп е тим мехашзмом, який надае об-'ектам змогу обмiнюватися даними мiж собою. Вони мають призначення i е одно- (лише один з об'еклв знае про юнування iншого) чи двостороншми (у межах зв'яз-ку кожен з об'ектiв може надсилати повiдомлення шшо-му). Кожен з юнщв асощацп мае значення численности яке визначае кiлькiсть об'ектiв на вщповщному кiнцi асощацп, яю можуть мати зв'язок з одним з об'еклв на шшо-му кiнцi асощацп. У даному випадку, зв'язки характери-зуються як один-до-багатьох, тобто з одного об' екту кла-су Main можна створити i тримати зв'язок з деюлькома об'ектами класу Parser i класу DNFMaker. Або у зворот-ному випадку, кожному об'екту класу Parser чи класу DNFMaker вщповщае лише один об'ект класу Main.

2. Клас Parser приймае стрiчку виразу i повертае значення true, якщо вираз е синтаксично правильним i false в iншому випадку. Метод analize () е ядром самого парсера, в осжда якого покладений алгоритм LL(1) Parser з використанням логiки подання формальних мов кон-текстно-вiльних граматик, що дшять весь алфавiт на тер-мшальт (клас Token) i нетермiнальнi (клас NonTerminal) символи. Правильнiсть виразiв визначають за допомо-гою стеку аналiзатора (параметр stash) i вхiдного виразу (expression) шляхом поступового застосування правил нетермiналiв у стеку. О^м зв'язку з об'ектом класу Main, клас Parser мае ще один асощативний зв'язок типу один-до-одного з класом Lexer.

1 User 5 ч Joa in.' reg atrat юг

£ info -* k excès 5 ю-5 ti d u t

%. result

? delated soijtor

f ¡¡j Ï-

«Г

Information system of prepositional logic expressions symbolic computations

; riwrd of seiton

ist'jtor info

tgetge

ïTSTriliVi uifo

SessionsDB

Рисунок 2 - Контекстна DFD 1С символьних обчислень виразiв в лопщ висловлювань

Рисунок 3 - Декомпозищя процесу символьних обчислень виразiв в логiцi висловлювань

Рисунок 4 - Д1аграма клас1в ядра 1С символьних обчислень в лопщ висловлювань

3. Клас Token - це клас атомарного висловлювання, яке е одним з перелiку (TokenType extends Enumeration, клас е сильно залежною суттстю, тому його зв'язок з кла-сом Token характеризуемся як композицшний, або дуже сильно агрегацiйний): операнд (operand), оператор (operation), лiва дужка (leftBrack) або права дужка (rightBrack). Поле text:String вiдображае iм'я операнда (якщо токен е операндом), знак операцп (якщо токен е операщею або символом), для вiдкритоi i для закрито! дужки ввдповдао. Додаткове поле negation: Boolean мае зна-чення true якщо заперечення над токеном iснуе i false в

шшому випадку. Клас мае зв'язок типу агрегаци, яка е особливим типом асоцiацiй, де два класи i3 зв'язком не е piBH03m4rnM^ тобто зв'язок типу "цше-частина". За до-помогою агрегацii описують, яким чином клас у ролi полого складаеться з шших класiв у ролi частин. У агрегащях клас у ролi цшого завжди мае численнiсть рiвну одинищ.

4. Клас NonTerminal для нетермiналiв, кожен об'ект якого мiститиме свш набiр правил rules, що поданш у виглядi послiдовностi термiнальних i нетермiнальних сим-волiв. Цей клас разом з класом Token е нащадками абстрактного класу Symbol (для визначення об'еднуючого

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

типу термiнальних (токенiв) i нетермiнальних символiв, оскiльки стек аналiзатора мiститиме об'екти як одного так i iншого класу).

5. Клас Lexer приймае стрiчку виразу i повертае той же вираз, роздшений на токени: операнди, операцп та дужки. Метод makeToken () е ключовим, в основi якого е алгоритм LL(1) Lexer. Додататга методи operand() i isLetter призначенш для коректного видiлення змiнних виразу, що складаються з бiльше, шж одного символу.

6. Клас DNFMaker перетворюе правильний вираз у ДНФ методом makeDNF.

7. Клас ExprTree - клас типу виразу, над яким працюе DNFMaker, оскiльки для перетворення виразiв використо-вувати форму дерева набагато зручшше. Дерево е бшар-ним iз-за наявностi лише бшарних операпiй (унарне запе-речення е як атрибут самого токена). Метод sortTree() е завершальним методом, i його призначення, використо-вуючи закони комутативноста, вiдсортувати операнди в визначеному (наприклад, алфавiтному порядку) для по-дальшоi зручностi посимвольного порiвняння.

8. Клас Node е складовим класу ExprTree у виглядi однiеi вершини. Поля left i right е вказiвниками на лiвого та правого сина вершини вщпов^но. Метод applyNegation е атомарним застосуванням закону под-вiйного заперечення, якщо value. negation == true, або запереченням значення вершини в шшому випадку.

На рис. 5 подана дiаграма дiяльностi ядра 1С символьных обчислень в лопщ висловлювань, яка складаеться з наступних етапiв.

1) Отримання вхщних даних (ввiд користувачем ви-разiв та перетворення iх до вщповщного вигляду для оп-рацювання 1С).

2) Перевiрка виразу на коректшсть - це робота лексе-ра i парсера системи, по завершенш якоi вiдомо, чи вираз е коректним, i система продовжуе роботу. В шшому випадку допущеш помилки, через якi система не зможе коректно опрацювати ni вирази. Тсад 1С генеруе звiт про помилку (який тип та мюце помилки) i завершуе свою роботу.

3) Створення дерева виразу (перетворення стрiчко-вого виразу у бшарне дерево, при цьому дужки упуска-ються, адже послiдовнiсть виконання виразiв диктувати-меться iх положенням у дерев^ з яким потiм прапювати-ме DNFMaker).

4) Перевiрка чи вираз е у ДНФ. Якщо т, то виконання кроку 5, шакше - кроку 6.

5) Застосування закону еквiвалентних перетворень та перехщ до кроку 4. Цикл триватиме доти, поки у деревi не залишиться кон'юктивних вузлiв на вищих рiвнях.

6) Сортування клауз, використовуючи закони кому-тативностi (посортувати операнди в визначеному порядку для подальшоi зручност посимвольного порiвняння).

7) Перевiрка на рiвнiсть (посимвольне порiвняння заданих виразiв).

8) Генерування результата (тдтвердження або спро-стування рiвностi виразiв).

Синтаксичний аналiзатор реалiзований як абстракт-ний автомат, який здшснюе виконання певного набору команд. Його основним завданням е проаналiзувати заданий вхiдний символьний рядок на належшсть до мови, яка описуеться LL(k) граматикою, i являе собою програ-му роботи автомата. Завдяки аналогiчностi форм подан-ня формул САА-схем i LL(k)-граматик даний автомат, окрiм виконання функцп граматичного аналiзатора, здат-

Рисунок 5 - Д1аграма д1яльност1 ядра 1С символьних обчислень в лопщ висловлювань

ний здшснювати штерпретащю САА-схем. Тому опис команд автомата розглядають як реалiзацiю алгоритму граматичного аналiзу по LL(k)-граматицi або штерпретащю САА-схем. САА -машина як автомат виконуе наступи команди типу:

- й<код> е командами опрацювання в^пов^ного нетермiналу з порядковим номером <код> в граматищ або складеного оператора в САА-схемц

- Л<код>, К<код> е командами виклику вщповщно! семантично! процедури, яка забезпечуе транслящю вхiдного рядка у вихщний при побудовi дерева виведен-ня, або виконання оператора (предиката) САА-схеми, що заданий процедурою/функцiею обрано! для синтезу мови програмування;

- L 'текст' i К 'текст', яю задають ж^вняння фрагменту вхiдного рядка з текстом, заданим в лапках команди L, К. При збпу цих фрагменпв команда К формуе лопчний результат перевiрки у виглядi глобально! лопч-но! змшно! САА-машини, а команда L додатково ще й пересувае вказiвник схеми на кiлькiсть символiв в текста команди у випадку збиу його з вхiдним потоком. H,i команди спецiалiзованi для символьного опрацювання, тому переважно використовуються в режимi штерпре-тацп LL(k)-граматик;

- I 'текст повщомлення', що забезпечують вiзуалiза-цiю тексту повiдомлення на екраш у вiкнi повiдомлень САА-машини.

- W <код> для обчислення складено! лопчно! умови в LL (Х)-граматищ або САА-схемах;

- логiчна команда & < операнд 1 > ... < операнд N > XL задае_обчислення кон'юнкцп зазначених операндiв логiчного типу, перелiчених без будь-яких додаткових роздшових символiв i зчитуються до послiдовностi сим-волiв XL;

- лопчна команда ! < операнд > ... < операнд > XL

задае обчислення диз'юнкцй зазначених операндiв лопч-ного типу, перелiчених без будь-яких додаткових роздшових символiв i зчитуються до послвдовносп символiв XL;

- лопчна команда —< операнд > задае обчислення заперечення вказаного логiчного операнда; у вмх лопч-них командах операндами можуть бути команди L, K, V,

або вкладеш один в одного зазначеш лопчш команди !, &, —;

- послиовне виконання команд автомата X; задаеть-ся !х послiдовним записом без роздшових знаюв (цими командами е тшьки команди типу А, В, 1); !х послiдовнiсть завершуе команда X;. Така послщовна гiлка (альтернатива) задае одне правило постановки для нетермшала граматики. Весь набiр правил пiдстановки для конкретного нетермшала задаеться списком альтернатив i з точки зору iмплементованоl програми е конструкщею SWITCH.

- альтернативне виконання визначае виконання по-слiдовних фрагментiв програми (так званих альтернатив) в залежностi вiд значення лопчно! умови, що сто!ть на

Таблиця 1 - Таблиця перетворень

початку кожно! альтернативи. У випадку ЬЬ(к)-граматик кiлькiсть альтернатив е довшьна, i виконуеться та альтернатива, в яко! умова входу в альтернативу виявилася юти-ною першою. При штерпретацп САА-схем альтернативне виконання здшснюеться як оператор

ЯКЩО <умова входу 1 > то < плка 1 > ШАКШЕ < плка 2 >;

- цик. ичие виконання послiдовного фрагмента програми автомата записуеться у виглядi С <логiчиий ви-раз> ХЬ <посл1довиа гiлка> X; та забезпечуе багатора-зове виконання пословно! гiлки (альтернативи) при iстинному значенш логiчного виразу. У САА-схемах ана-логiчна конструкцп мае вигляд ПОКИ НЕ <лопчний ви-раз> ЦИКЛ <послщовна гшка>;

- логiчиа константа Е рiвна тотожно iстиннiй лопчнш умовi.

У табл. 1 наведет приклади вiдповiдностi фрагментiв граматик i внутрiшнього подання формул САА-схеми у виглядi послiдовностей команд САА-машини.

Програма автомата перед iнтерпретацiею перетво-рюеться в спискову внутрiшню форму, що складаеться з:

- Граматики, яка визначена як стрiчка команд САА-машини без роздшових знаюв, при цьому тексти повщом-лень та лексем в командах К, Ь винесет у окремi таб-лицi, а в граматицi збершаеться тiльки !х порядковий номер у вщповщнш таблицi.

- Таблиц лексем, де в /' стрiчцi таблицi задано iндекс лексеми команди К1 /Ц в стрiчцi символiв, де пiдряд за-писанi вс лексеми граматики без роздiлових знаюв та довжина лексеми (юльюсть символiв в нiй).

- Таблицi тформацшних повiдомлень, яка збудова-на аналопчно до таблицi лексем: в рядку таблиц задано iндекс повiдомлення команди в рядку символiв, де тдряд записанi всi повiдомлення граматики без роздшових знаюв, а також довжина повщомлення.

- Таблиц опису складено'1 логiчноi умови у виглядi лопчного предикату з командами диз'юнкцп, кон'юнкцп та заперечення, яка задае шдекс цього опису в стрiчцi граматики.

- Таблиц опису альтернативи граматик (гшки роз-галуження в САА-схем^, яка визначае шдекс початку опису альтернативи в рядку символiв граматики.

- Таблиц визначення нетермiналiв (складних опера-тс^в САА-схеми), кожний рядок яко! складаеться з двох елементав - шдексу таблицi опису альтернатив, де вказа-но початок першо! альтернативи нетермшалу, та iндексу таблицi опису альтернатив, де вказано початок остан-ньо! альтернативи цього нетермшалу в рядку граматики. Рiзниця мiж цими двома елементами визначае юльюсть альтернатив нетермшалу.

Таке внутршне подання будуеться модулем САА-машини inner_gram. 1нтерпретащя команд типу В здiйснюеться шляхом запам'ятовування в магазинi адре-си наступно! за нею команди та перехщ на виконання першо! команди альтернативи цього нетермшалу. Поча-

з ЬЦк) граматики у САА схему

Форма опису LL(k)-граматики Вщповщна формула САА-схеми Подання формули САА-схеми

Bi=L 'схема' B2 A1X; К'обект' B1 A2 X; E X; B2=C&L'кiнець'K'='XL AX; B1= ЯКЩО V1+V2 ТО A1 1НАКШЕ B2; B2= ПОКИ НЕ V3 ЦИКЛ А2; B1=!V1 V2 XL A1X; E B2 X; B2=C V3 XL A2 X;

ток пiеi альтернативи обчислюють за номером нетермь налу, який задае iндекс Таблиц визначення HemepMmmie альтернатив, а та визначае початок опису кожжи алер-нативи цього нетермiналу в Таблиц опису альтернативи грамматик. По завершенню штерпретацп реалiзапii B, яка наступае при виконаннi команди команди X;, вщбу-ваеться повернення на наступну за цим нетермiналом команду, адреса пiеi команди вибираеться зi стеку. Ме-ханiзм iнтерпретапii команд B iдентичний механiзму вик-лику процедур в мовах програмування.

¡нтерпретащя команд A та V здшснюеться за допомо-гою виклику iх реалiзапiй, що заданi у виглядi переми-качiв SWITCH, де номер команди A задае умову входу в гшку перемикача операторiв, а номер команди V - умову входу в гшку перемикача базових лопчних умов. При цьому результат виконання логiчноi функцп V збершаеть-ся в глобальнш логiчнiй змiннiй САА-машини. 1нтерпре-тащя логiчних команд автомату здiйснюеться з викорис-танням традипiйноi логiки мов програмування та гло-бальноi логiчноi змiнноi САА-машини. Генерапiя програми по САА-схемi та набору реалiзащй елемен-тарних операторiв та умов реалiзують довiльною мовою програмування, оскшьки таке перетворення задаеться граматикою, i самi семантичнi процедури пiеi грамати-ки просто визначають генерапiю коду в обранш мовi програмування. Замша семантичних процедур однiеi мови програмування на шшу викликае результат гене-рапii коду та подання алгоритму в вщповщнш мовi. 4 ЕКСПЕРИМЕНТИ

Перерахованi команди САА-машини е базовими для опису LL(k)-граматики САА-мови. При створенш пiеi граматики враховувалася вкладешсть конструкпiй, на-приклад,

B1 = B7B2X; B2 =KСХЕМА' A5 B7 A4 B7 B8 X;

=EГ'очiкуеться ключове слово СХЕМА' B45 X;

B8 =K';' A1 B7 B3 X; =£Точ^уетъся ;' B45 X;

Наведений фрагмент граматики аналiзуе заголовок схеми. Нетермшал B7 здiйснюе прохiд через послщовшсть прогалин будь-якоi довжини. Нетермiнал B2 вiдповiдае за аналiз ключового слова СХЕМА та щентифжатора схеми. За перенесення слова СХЕМА в формулу пiеi схеми вiдповiдае семантична процедура А5, а семантична процедура А4 визначае iдентифiкатор схеми, присвоюе схемi унiкальний внутрiшнiй щентифжатор та записуе його в формулу. У випадку вдаутност ключового слова СХЕМА або помилки при його написанш команда K СХЕМА' сформуе хибне логiчне значення, тому вибереться на-ступна за порядком альтернатива нетермшала B2 а саме: ЕГ очiкуеться ключове слово СХЕМА' B45 X;. Ця альтернатива починаеться тотожно ютиною логiчною умовою Е, тому командою Г'очiкуеться ключове слово СХЕМА' друкуеться повiдомлення про помилку та припиняеться трансляпiя через синтаксичну помилку. Нетермiнал B4 здшснюе синтаксичний аналiз лiвоi частини рiвняння. Стандартнi iдентифiкатори складеного оператора почи-наються символом В, складеноi умови - символом W, змiстовнi щентифжатори операторiв подають в подвiйних

лапках, а змгстовт iдентифiкатори складних умов пода-

ють в одинарних лапках, наприклад,

B4 =KB' A5 B7 Bjq B7 B8 X; =K"" AQ A9 AQ B7 BJQ B7 B8 X;

=K W A8 B7 Bn B7 B8 X; =K'#' Aq A1Q Aq B7 Bn B7 B8X;

=EГневiрний iдентифiкатор в лiвiй частит рiвняння' B45 X;

Наступний фрагмент граматики здшснюе поглинан-ня пробЫв.

B7 =K ' Aj B44 X; =ЕГ'оч^еться пробiл' B45 X; B44 =K ' Aq B44 X; =EX;.

Нетермiнал В3 здшснюе опрацювання тiла схеми з де-кiлькох рiвнiв проектування, заданих складними операторами та складними умовами. Ц рiвнi задаються окре-мими р;вняннями з iдентифiкаторами операторiв чи умов в лшш частинi р;вняння та алгебраiчним виразами в САА в правш частинi р;вняння, наприклад, B3 =К'К1НЕЦЬ' B45 X; =EB4 B3 X;.

Нетермiнал B1Q аналiзуе наявнiсть знаку = перед правою частиною р;вняння, що визначае складний оператор. Нетермшал В аналiзуе наявнiсть знаку = перед правою частиною р;вняння, що визначае складну умову. В правш частиш р;вняння використовують стандартнi щентифшатори операторiв та лопчних умов (складних i базових) та iх змютовш iдентифiкатори. Вiдповiдае за аналiз правоi частини р;вняння В5. /-iдентифiкатори схеми пов'язаш м;ж собою операщями алгебри розгалу-ження та циклу, наприклад,

B1Q =K'=' Aj B7 B5 B7 B6 X; =EГ'очiкуеться =' B45 X;

B5 =KA' Ajj X; =Kff A5 X; =K" A7 X; =К'ПОКИ' A4 B7 B9 X;

=К'ЯКЩО' A4 B7 B14 B7 B12 X; =K'(' Aj B7 B5 B7 BJ3 X;

=EГневiрний оператор в лшш частит ршняння схеми' B45 X;.

Послiдовне виконання (*) опрацьовуеться нетермь налами В6 та В . В13 вiдповiдае за фрагменти оператор-них виразiв, взятих в дужки ().

B6 =K'*' Aj B7 B5 B7 B6 X; =K';' Aj B7 X;

=EГ'очiкуеться * або ; в правш частиш р;вняння' B45 X;

BJ3 =K')' AJ B7 B5 B7 B6 X; =K'*' AJ B7 B5 B7 BJ3 X;

=EГ'очiкуеться ) або * в правш частиш р;вняння' B45 X;

Нетермiнал В аналiзуе продовження оператора роз-галуження з ключового слова ТО

BJ2 =К'ТО' A2 B7 B5 B7 Bjg B7X;

=EГ'очiкуеться продовження оператора ЯКЩО -операторна дужка ТО' B45 X;

В аналiзуе продовження оператора розгалуження з ключового слова 1НАКШЕ, тобто

B15 =К'1НАКШЕ' A6 B7 B5 B7 B6 X;

=EГ'очiкуеться операторна дужка 1НАКШЕ' B45 X;

Наступний приклад описуе аналiз р;вняння для подання складжи логiчноi умови.

BJJ =K'=' AJ B7 BJ7 B7 BJ8 X;

=EF очкуешься дорiвнюе в лопчному ршнянт схеми' B45 X;

BJ7 =K V AJ2X; =K W AJ3 X; =K'#' A8X; =EГ'невiрний лопчний операнд в лопчнш умов; ' B45 X;

В описуе операцп лопки як диз'юнкщю (+), кон'юн-кщю (.), заперечення ( ! ), тобто

B18 =K'+' A1 B7 B17 B18 X; =K'.' A1 B7 B17 B18 X; =K'!' A1 B7 B17 B18X; =K';' A1 B7X;

Команда X& вщзначае кшець граматики. В9 анал1зуе фрагмент оператора циклу:

B9 =К'НЕ' A2 B7 B14 B7 B16 X; =£7'оч1куеться НЕ в оператор! циклу ПОКИ НЕ' B45 X;

Аналопчно В16 продовжуе анал1з оператора циклу з ключового слова ЦИКЛ, тобто

B16 =К'ЦИКЛ' A4 B7 B5 B7 B6 X; =£7'оч1куеться опера-торна дужка ЦИКЛ' B45 X;.

Граматику програмою перетворюють в спискову форму та в масив команд САА-машини. Кожна команда визначаеться типом, заданим полем типу char та поряд-ковим номером. Цей масив складаеться з посл1довнос-тей альтернатив вих нетерм1нал1в. Для визначення початку опису конкретного нетермшалу в такому масив1 створюються таблиц! Т_В, де зафжсоваш шдекси маси-ву граматики як початок альтернатив. Вм термшальш слова (ключов! слова схеми) з1браш в окрему стр1чку. Для вибору ключового слова при синтаксичному анал1з1 номер термшалу при командах K, L задае шдекс таблиц! термшал1в T_TERM. Остання е масивом запимв, як! скла-даються з шдексу початку термшалу в спшьнш сим-вольнш стр1чц1 та його довжини. Аналопчно побудова-на таблиця повщомлень T_INF. Загальне вжно програми мае 8 робочих областей та одну кнопку Translate, яка шщюе початок роботи системи (рис. 6).

Ум робоч1 областа на рис. 6 пронумерован! для зруч-ност! пояснення.

1. Область для вщображення введених початкових да-них. Завантажують дан! з текстового файлу за допомо-гою Open file. Вхщними даними е САА-схеми або грама-тика для САА-машини (завдяки жадбност! структур LL(k)-граматики та формул САА-схем, система волод1е можлив1стю використання САА -машини як штерпрета-тора САА-схем, так i створення тестового апарату для вщлагодження САА-схем).

2. В^ображення списково! форми граматики САА-схем. ЬЬ(к)-граматика в списковш формi е керуючою програмою для абстрактно! машини з фжсованим набором команд, тобто е в певнш мiрi вхiдними даними, але генеруються автоматично системою.

3. Таблиця граматики Т_ТЕКМ (лексем або термшаль-них значень, якi властивi заданш граматицi). Лексемами е ключовi слова (СХЕМА, КГНЕЦЬ тощо), слова-опера-тори (ПОКИ, НЕ, ЯКЩО тощо), знаки лопчних опера-торiв тощо.

4. Таблиця повщомлень Т_ЮТ зберiгае повщомлен-ня граматики, якi призначенi для вщображення у вихiднiй стрiчцi (робоча область 8), щоб повiдомити користувача про синтаксичну помилку у схемi (якщо така виявлена).

5. Таблиця початюв альтернатив Т_В, якi в робочш областi 2. Кожна окрема альтернатива розмiщуеться мiж двома командами типу Х1 - вона вщповщае командi граматики Х;. У таблиц зафiксованi iндекси масиву грама-тики, що е початками альтернатив.

6. Таблиця альтернатив Т_АЬТ складаеться з двох псшв: перше визначае шдекс таблиц! Т_В, що фжсуе початок в масивi граматики першо! альтернативи нетермiналу, друге поле - шдекс останньо! альтернативи нетермшалу. Рiзни-ця мiж цими полями задае кшьюсть альтернатив нетермь налу з номером, що е шдексом таблицi Т_АЬТ. Для розу-мшня органiзацi! граматики розглянемо для прикладу другу альтернативу з робочо! областа 2. Вона знаходиться мiж командамиХ1 i мае вигляд К0 А5 В7 А4 В7 В8. Ця альтернатива вiдповiдае правилу постановки: К'СХЕМА' А5 В7 А4 В7 В8. Командою К0 задана лексема СХЕМА в списковш формг Тут 0 - це шдекс лексеми в таблиц! Т_ТЕКМ (таблиця подана на штерфейснш схемi тд номером 3). Перша лексема (значення iндексу 0) в цш таблицi i е ключовим словом СХЕМА. Альтернатива (1) починаеться в спис-ковш формi за iндексом 3. Ця альтернатива е першою в списку альтернатив нетермшалу В2 початково! форми граматики, яка зручна для !! розумшня.

В2 =К'СХЕМА' А5 В7 А4 В7 В8 X; =£7'оч^еться ключо-ве слово СХЕМА В45 X;.

о^1 SAA machine

¡H)

Орел fie

В1 =0? 02 х

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

В2 =КСХЕМАА5 07 A4 07 BS X, =ЕГочкуеться кпючове слово СХЕМА' 845 X; 1 BS-K1:'AI В7ВЗХ: =ЕГочкуеться ß'5 X ВЗ =К"Имеи=- В4Б X: =ЕВ4 ВЗ X; В4-1СВ'А5В7В10В7 В8 X: =КЧ"АОАЭАО07 В10 В7 BSX; =KW'AS 87 В11 В7В8Х: =ЮГ АО Al О АО В7 В11 В7 ВЗ X:

-СГнеЫрннй ¡дентифкатор в пей чэстт рюняння' D45 X: В7=К"А1 В44Х,

-СГпнЬлш-п м ■-----------' од V

а

87 82 XI КО А5 87 A4 87 В8 XI Е-1 Ю В45 XI Kl Al 07 83X1 Е-1 II 845X1 K2B4S Х1 Е-1 В4 ВЗ XI КЗ А5 Е)7 810 87 88X1 К4А0АЭА0 67 BID 07 BS XI К5 AS 07 В11 Б7В8Х1 KG АО А10А0 87811 87 88X1 Е-112 845 XI К7Д1 844X1 Е-113 845

Translate

СХЕМА >

Киець J

?

W

# 3

А -

ойуша к л ючоее очкуетъея: Heeipmu'i щеп тиф»« й«ку£Гь£й прогали очкуетъея = нсо!риий оператор очкуеться ' або : е (Лвсуетьсд) аба " в очкуетъея продовя очкуется оперэто

0:0 > ВО: 0 0 >

1:3 В1:12 —

2:12 -I 92-34

3. 14 83. 5 6 6 ■

4:21 В4: 711

5:23 85:1213 и

6:2S BS: 14 15

7:30 87: 1617

S: 39 BS: 18 24

Э: 48 * ВЭ- 25 27 *

Рисунок 6 - Загальний вигляд робочого вжна системи

Альтернатива (1) розмiщена в списковiй формi граматики починаючи з iндексу 3, вона е другою альтернативою граматики, тому за iндексом /5=2-1=1 (в таблищ 5 iнтерфейсноï схеми записано цей шдекс). Так як ця альтернатива е першою альтернативою нетермшалу В2, то по шдексу i6=2—1=1 таблицi 6 повинен бути записаний шдекс i5 таблищ 5. Цей шдекс записуеться в перший еле-мент стрiчки таблищ 6 з шдексом i6, цей елемент в таблиц визначений як поле beg_alt — першоï альтернативи. Наступна альтернатива: £—11 B45. Вона е другою i завер-шальною альтернативою нетермшалу В2. Початок ïï в граматицi задаеться iндексом 12, цей шдекс записаний в таблицю 5 в рядок 3 (шдекс i5=2). Так як це завершальна альтернатива нетермшалу В2, то в таблицю 6 по iндексу i6 в другий компонент стрiчки таблицi T_ALT заноситься шдекс i5. Тому 2 рядок таблищ 6 мае вигляд 1 2.

7. Вихщний рядок. Ця область призначена для вщоб-раження результату усшшного завершення роботи про-грами, а саме — згенерованоï формули САА-схеми.

8. Лог системи. У разi виявлення синтаксичних поми-лок, система припиняе свою роботу з виведеним повщом-ленням про причину з таблицi T_INF (робоча область 4).

5 РЕЗУЛЬТАТИ

Уа вказанi таблиц заповнюються автоматично САА -машиною як генератора граматики iз звичайного текстового файлу, який описуе граматику за правилами LL(k)-подання. Далi, вони використовуються САА-машиною як синтаксичним аналiзатором для прочитання i граматично-го розбору заданоï САА-схеми.

Роботу системи найкраще подати шляхом покрокового обчислення контрольного прикладу. Для цього використае-мо алгоритм бульбашкового сортування. Для початку, розг-лянемо регулярну схему послiдовного бульбашкового сор-тування по зростанню числового масиву записану в аналь тичному вигляда, який зручний для формульного аналiзу та перетворень. У наведенiй регулярны схемi в явнiй формi подана алгорипшчна частина сортування, а дат в нш явно не вказуються, тобто *aj(a 2(£ v A2) * A3}}. Умови

aj,a2i оператори Aj, A2, A3, цiеï схеми е базовими.

Для початку роботи необидно ввести початкову граматику САА-схем, яка зможе повно описати мову. Для цього попередньо необхщно шдготувати текстовий файл з правилами виведення КЬ(к)-граматики (рис. 7). Веривши заданий файл у програмi системи (рис. 8), те саме наповнення появиться у найбшьшш з робочих областей програми. Пiсля введення даних запускають програму кнопкою Generate. Назва цiеï кнопки м^еться в залеж-ностi в^ поточноï функцiï САА-машини. Оскiльки на першому етапi основним завданням системи е грама-тичний розбiр i побудова схем граматики, режимом САА-машини буде синтаксичний аналiзатор. Однак при побу-довi САА-формул з САА-схем, САА-машина виконува-тиме роль штерпретатора, а тому i кнопка, що шщюватиме запуск САА-машини матиме назву Translate. У випадку усшшного завершення програми, у результата буде створена граматика, за якою проводити-меться подальший аналiз САА-схем (рис. 9).

Наступний етап вимагае введення САА-схеми алгоритму бульбашкового сортування.

СХЕМА babl;

' 'babl' ' = ' ' старт' ' * ' ' встановити вказiвник B(1) перед початком масиву (МА88) ' '

* ' ' виконати FL=1' '

* ПОКИ НЕ 'FL = 0 '

ЦИКЛ (' ' виконати FL = 0 ' ' *

Рисунок 7 — Текстовий файл граматики мови САА схем

Рисунок 8 — Введення граматики у систему

и^1 SAA machine

[ ■=■ I В

I Opcnfite

B1 -B7B2X;

B2 =ЮСХЕМА'A5 B7 A4 B7 B8 X; =ЕГочкуеться ключове слово СХЕМА' В45Х: ES A1 B7B3X; -Ei'oiiKyeibca:' 645 x: B3 =ККтець" B45X: -ЕВ4ВЭХ

Е4=ЮВ-А5В7 810В7В8Х. =K"" АО АЭ AO B7B1QB7B8 X: -KWA8B7B11B7B8X; =KWAÜA10A0 B7eilB7eSX;

=ЕГнев(*»1й 1дентиф1катор в niBiii части™ ртнлтл" В45Х; В7^К" А1 В44Х:

0

В7 В2 XI KQA5B7A4B7B8 XI Е-1 10 845X1 Kl AI В7 ВЗХ1 Е-1 If BJ5XI К2BJ5 Х1 Е-1 В4ВЗХ1 K3ASB7 ВЮВ7ВЙХ1 К4 АО AS АО B7B10B7BSX1K5A3 87 В11 В7ВЕХ1 Кб АО А10 АО В7В11В7 BS XI Е-1I2B45 Х1 К7А1 В44 Х1 Е-113 BJ5

СХЕМА -

Юнеиь

» I

W

и

А -

ОЧКуе ться к пючове о'жуетъся; иеврмий |дентифк< очкуетъся прогали очкуетъсн ■ неверный оператор 0«iyeibca"9l50 ; е о'жуетьсп) або 'в очкуеться продовя о^куеться опврато

[ Т|дв1Лв ]

0 0 А

1 3 -

2 12 51

3 14

4 21

5 23

6 28

7 30

а 39

3 48 -

ВО: 0 0

31: 1 2 П

В23 4

ВЗ: 5 6 4

В4: 7 11

BS' 12 13 LJ

В6: 14 15

В 7; 1617

BS: 18 24

ВЭ. 25 27 -

Рисунок 9 - Результат роботи синтаксичного анал1зу

''встановити вказiвник B(1) перед початком масиву (MASS)'' *

ПОКИ НЕ 'вказшник B(1) в кшщ (MASS) '

ЦИКЛ ( ЯКЩО 'по B(1) елемент злiва L>R елемента справа в (MASS)'

ТО "переставит елементи L,R по B(1) мiсцями в MASS''

* ''виконати FL=1''

* ''зсунути У(1) на (1) по (MASS) вправо''))

*

* Ф1Н;

К1НЕЦЬ

Основними об'ектами мови САА опису регулярних схем алгорштшв е абстракцii операторiв i умов. При цьо-му в мовi розрiзняються елементарнi оператори та умо-ви i складенi оператори та умови. Складенi оператори та умови фiксують певнi рiвнi проектування конкретноi регулярноi схеми. Aналогiчно, основними абстракщя-ми мови САА е складен i елементарнi оператори та умови. Для подання складених i елементарних операторiв, умов введет стандартт i смисловi iдентифiкатори. Ту ж саму САА-схему, змодифiкувавши ii пiд один з варiантiв вдосконаленого бульбашкового сортування, подано у табличному виглядi (табл. 2) з вказанням номеру стрiчки початкiв кожноi з операцш. Задана схема подана одним рiвнянням. Базисними елементарними операторами в нш е оператори, змiстовнi ^ентифжатори, якi почина-ються в рядках 1, 2, 5, 8, 11, 12. Базист умови подат змютовними iдентифiкаторами в рядках 4, 7, 10.

Таблиця 2 - Таблична схема вдосконаленого алгоритму бульбашкового сортування

№ стрiчки САА-схема

СХЕМА bable удосконалена;

1 "Бульбашка / ВД" = "старт" *******

2 "Встановити вказшники Bi та В2 в кшець (mass)"

3 ******

4 ПОКИ НЕ 'В (2) перед початком (mass)' ЦИКЛ

5 ("Встановити В (1) перед початком (mass)"

6 *************

7 ПОКИ НЕ 'Вщстань мiж В (2) i В (1) в (mass) дор1внюе 0

8 ЦИКЛ ("Пересу нути В (1) на (1) по (mass) вправо"

9 **************

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

10 ЯКЩО 'L по У (1)> R по В (1) в (mass)'

11 ТО "Помшяти мющми R по В (1)"

12 ТНАКТТТЕ "Зрушити В (1) на (1) по (mass) влiво" ))

13 К1НЕЦЬ

6 ОБГОВОРЕННЯ

Вдосконалення звичайного бульбашкового сортування здшснюеться за рахунок введення вказiвника B (2), який фшсуе вiдсортовану частину масиву з найбшьши-ми його елементами. Вказiвник B (1), який початково встановлений на початок масиву, за один прохщ внутрь шнього циклу зсуваеться вщ початку масиву до вказiв-ника B (2), пересуваючи при цьому найбiльший на цiй дшянщ елемент масиву на мiсце, що фiксуеться вказiв-ником B (2). Шсля злиття вказiвникiв B (1) i B (2), B (2) зсуваеться на один символ влiво, а B (1) встановлюеться на початок масиву У схемi на рис. 10 в змютовних щен-тифiкаторах використовують об'екти в круглих дужках, якi е параметрами вщповщних цим iдентифiкаторам опе-раторiв або умов. Наприклад, в оператор зi змiстовним iдентифiкатором «Пересунути B ( 1 ) на ( 1 ) по ( mass ) вправо» залежить вщ трьох параметрiв:- вказiвника Б^ -величини зсуву по масиву (1); - iменi масиву, по якому вiдбуваеться перемщення вказiвника. При цьому реаль защя такого оператора нагаду' опис процедури iз зазна-ченням цих трьох параметрiв як формальних параметрiв, тода як змiстовний iдентифiкатор в схемi е викликом цiеi реалiзацii iз зазначенням фактичних параметрiв. Такий виклик при синтезi програми може замшюватися як справжнiм викликом реалiзацii оператс^в (у виглядi про-цедури), так i як вставлений фрагмент програми, що ре-алiзуе цей оператор, iз замiною в цьому фрагмента формальних параметрiв на фактичт (макрогенерацiя). ВИСНОВКИ

У робота дослщжено застосування САА для грама-тичного аналiзу символьних обчислень виразiв логiки висловлювань. САА-схема розглядаеться як вхщна стрiчка синтаксичного аналiзу Цю стрiчка пiд час трансляцii пе-ретворюеться у макет програми у вибранш мовi про-грамування. Перетворення здшснено в процесi побудо-ви дерева виведення i задано атрибутною граматикою мови САА-схем. Розроблено мехашзм синтезу програм за iх САА-схемою. Це було здшснено у виглядi абстракт-rn>i САА-машин. Ця машина через жадбшсть механiзмiв порiвневого проектування САА-схем та КЬ(к)-граматик може служити не тшьки для задач синтезу, але й для

oJ SAA machine

Орел fite

01 -B7B2X:

B2 = «СХЕМА' А5 В7 М 87 BS X, =ЕГочкуеться ключове слово СХЕМА' В45 X; ВВ-КГА! В7ВЗХ: =ЕГочку=ться ;'В45Х; ВЗ =ККиець' В45Х; -ЕВ4ВЗХ:

84 ■К'ВТ А5 В7 B1D 87 88 X: 4С"А0 А9 АО В7В10 87 В8Х;

А8 В7 В11 В7В8Х; -KW АО А10 АО В7В11 В7 В8Х: -£|'не»р™й ¡яентифкв-пчз в лей чес™ рекя»ш' 845 X: В7=К"А1 В44Х,

-clvuéflmi м m^w-lm^i.-l1 dar v-

I

В7В2Х1 К0А5В7А4В7В8 XlE-1 Ю 845X1 Kl Al B7 B3X1 E-1 11 B4SX1 K2B45 X1 E-1 B4 B3X1 K3A5B7 B1087 88X1 K4 АО ASAD В7В10В7В8Х1 KSASB7 В11В7В8Х1 Кб А0А10 АО В7В11В7В8Х1 E-112 В45 XI К7А1 В44Х1 Е-1 13 В45

СХЕМА -

КИеиь _

В

W

#

А w

очкуеться ключове очкуеться : Heeiprt^i ¡JBH™<P¡K< очкуеться прогали очкуеться -неортй оператор

□жуеться "або ; к очкуеться )або "в очкуеться продов* очкуеться операто

Translate

0 0

1 3 а

2 12 -

3 14

4 21

5 23

6 28

7 30

S 39

9 48 *

ВО: 00 Л

Bl: 12 ги

В2-34

В3.56 —

В4: 7 11

В5: 12 13

86 14 15

В7:16 17

В8: 18 24

ВЭ: 25 27

4.

Рисунок 10 - Результат опрацювання САА схеми

штепретацй (вiдлагодження) САА-схем програм. Розроб-лено iнтелектуальну систему генерацп програм за допо-могою засобiв синтаксичного аналiзу в системах алгорит-мiчних алгебр Глушкова. Система здатна проводити син-таксичний аналiз та забезпечувати користувача повною шформащею про помилки, якщо такi будуть виявленi. Автоматично генеруе подання граматики в списковому виглядi, що дае змогу реалiзувати метод рекурсивного спуску без використання рекурсивних процедур. Синтак-сичний аналiзатор системи представлений у вигляд абстрактно! машини з фжсованим набором команд, для яко! ЬЬ(к)-граматика в списковiй формi е керуючою програ-мою. Для iмплементацi! ядра системи була використана об'ектно-функцюнальна мова програмування 8са1а. Фун-кцiональнi частини були декомпонованi на окремi модул^ кожний з яких реалiзовуеться окремим об'ектом у 8са1а-проектi. Результатом системи е формульне подання САА-схеми алгоритму. Така абстракция дозволяе на подальших етапах трансформацi!! генерувати будь який алгоритм у задану мову програмування, за умови опису щею мовою базових компонент iмплементацi! алгоритмiв: операторiв присвоення, циклiв, умови та лопчних порiвнянь. У май-бутньому плануеться удосконалити систему шляхом !! розширення для реалiзацi! ширшого кола опрацювання мов програмування й задач, яю пов'язанш з САА.

СПИСОК ЛГГЕРАТУРИ

1. Глушков В. Методы символьной мультиобработки / В. Глуш -ков, Г. Цейтлин, Е. Ющенко. - К. : Наук. думка, 1980. - 252 с.

2. Глушков В. Алгебра. Языки. Программирование / В. Глушков, Г. Цейтлин, Е. Ющенко. - К. : Наук. думка, 1989. - 376 с.

3. Цейтлин Г. Введение в алгоритмику / Г. Цейтлин. - К. : Фара, 1999. - 310 с.

Цейтлин Г. Алгебры Глушкова и теория клонов / Г. Цейтлин // Кибернетика и системный анализ. - 2003. - № 4. - С. 48-58.

5. Цейтлин Г. Структурное программирование задач символьной мультиобработки / Г. Цейтлин // Кибернетика. - 1983. -№ 5. - С. 22-30.

6. Цейтлин Г. Распараллеливание алгоритмов сортировки / Г. Цейтлин // Кибернетика. - 1989. - № 6. - С. 67-74.

7. Цейтлин Г. Проектирование последовательных алгоритмов сортировки / Г. Цейтлин // Программирование. - 1989. - № 3. - С. 3-21.

8. Многоуровневое структурное проектирование программ: Теоретические основы, инструментарий / [Е. Ющенко, Г. Цейтлин, В. Грицай, Т. Терзян]. - М. : Финансы и статистика, 1989. - 208 с.

9. Калужнин Л. Об алгоритмизации математических задач / Л. Калужнин // Пробл. кибернетики. - 1959. - Вып. 2. - С. 51-69.

10. Мартинюк Т. Методи та засоби паралельних перетворень векторних масивiв даних / Т. Мартинюк, B. Хом'юк. - В. : УШВЕРСУМ-Вшниця, 2005. - 203 с.

11. Дорошенко А. О методе проектирования абстрактного типа данных в алгебре алгоритмики / А. Дорошенко, О. Иовчев // Проблеми програмування. - 2012. - № 1. - С. 3-16.

12. Акуловский В. Некоторые аспекты формализации архитектурного этапа разработки алгоритмов / В. Акуловский // Про-блеми програмування. - 2009. - № 2. - С. 3-11.

13. Алгеброалгоритмические модели и методы параллельного программирования / [Ф. Андон, А. Дорошенко, Г. Цейтлин, Е. Яценко]. - К. : Академпериодика, 2007. - 634 с.

14. Иовчев В. Инструментальные средства алгебры алгоритмики на платформе WEB 2.0 / В. А. Иовчев, А. С. Мохница // Про-блеми програмування. - 2010. - № 2-3. - С. 547-556.

Стаття надшшла до редакци 23.02.2016.

Шсля доробки 04.03.2016.

Лытвын В. В.1, Бобык И. О.2, Высоцкая В. А.3

'Д-р техн. наук, профессор, заведующий кафедры «Информационные системы и сети» Национального университета «Львовская политехника», Львов, Украина

2Канд. физ.-мат. наук, доцент кафедры «Высшей математики» Национального университета «Львовская политехника», Львов, Украина

3Канд. техн. наук, доцент кафедры «Информационные системы и сети» Национального университета «Львовская политехника», Львов, Украина

ПРИМЕНЕНИЕ СИСТЕМЫ АЛГОРИТМИЧЕСКИХ АЛГЕБР ДЛЯ ГРАММАТИЧЕСКОГО АНАЛИЗА СИМВОЛЬНЫХ ВЫЧИСЛЕНИЙ ВЫРАЖЕНИЙ ЛОГИКИ ВЫСКАЗЫВАНИЙ

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

отлаживать в соответствующих схемах. Определены четкое разделение системы алгебраических алгебры на отдельные модули, каждый из которых будет характеризоваться своим функциональным нагрузкам. Использованы методы синтаксического анализа для разработки и представления грамматики таких схем. Реализовано автоматическое ее преобразования в списочную форму. Разработан машины системы алгебраических алгебры как абстрактный механизм интерпретации грамматики средствами синтаксического анализа. Словарь V состоит из конечного не пустые множества лексических единиц. Выражение над V является цепочкой конечной длины лексических единиц с V. Прежний цепочку, не содержит лексических единиц, обозначим через. Множество всех лексических единиц над V обозначим. Язык над V является опилками. Язык задают через множество всех лексических единиц языка или через определение критерия, которому должны удовлетворять лексические единицы, чтобы принадлежать языке. Еще один важный способ задать язык - через использование порождающих грамматики. Грамматика состоит из множества лексических единиц разного типа и множества правил или продукций построения выражения. Грамматика имеет словарь V, есть множество лексических единиц для построения выражений языка. Некоторые лексические единицы словаря (терминальные) не могут заменяться другими лексическими единицами. Текст реализует структурно представленную деятельность, предполагает субъект и объект, процесс, цель, средства и результат, которые отражаются в содержательно-структурных, функциональных, коммуникативных показателях. Единицами внутренней организации структуры текста является алфавит, лексика (парадигматика), грамматика (синтагматика), парадигмы, парадигматические отношения, синтагматические отношения, правила идентификации, высказывания, между фразовой единство и фрагменты-блоки. На композиционном уровне выделяют предложения, абзацы, параграфы, разделы, главы, во главу, страницы и т.д., которые, кроме предложения, косвенно связанные с внутренней структурой, поэтому не рассматриваются. С помощью базы данных (базы терминов / морфем и служебных частей речи) и определенных правил анализа текста выполняют поиск срока. Синтаксические анализаторы работают в два этапа: идентифицируют содержательные лексемы и создают дерево разбора.

Ключевые слова: текст, украиноязычный, алгоритм, контент-мониторинг, ключевые слова, лингвистический анализ, синтаксический анализ, порождающих грамматики, структурная схема предложения, информационная лингвистическая система.

Lytvyn V. V.1, ВоЬук I. O.2, Vysotska V. A.3

1Dr. Sc., Professor, Head of Information Systems and Networks Department, Lviv Polytechnic National University, Lviv, Ukraine 2PhD, Associate Professor of Higher Mathematics Department, Lviv Polytechnic National University, Lviv, Ukraine 3PhD, Associate Professor of Information Systems and Networks Department, Lviv Polytechnic National University, Lviv, Ukraine APPLICATION OF ALGORITHMIC ALGEBRA SYSTEM FOR GRAMMATICALANALYSIS OF SYMBOLIC COMPUTATION EXPRESSIONS OF PROPOSITIONAL LOGIC

The architecture and implemented a software system parsing schemes of algebraic algebra and their interpretation. The software system allows to generate automated in such schemes create a program and debug the relevant schemes. A clear division of algebraic algebra into separate modules is defined, each of which will be characterized by its functional load. The methods of parsing for the development and presentation of grammar such schemes are used. Automatic transforming it in a list form is implemented. A machine system of algebraic algebra as an abstract interpretation of the mechanism of grammar parser is defined. The vocabulary V consists of finite not empty set of lexical units. The expression on V is a finite-length string of lexical units with V. An empty string does not contain lexical items and is denoted by Л. The set of all lexical units over V is denoted as V'. The language over V is a subset V'. The language displayed through the set of all lexical units of language or through definition criteria, which should satisfy lexical items that belong to the language. Another is one important method to set the language through the use of generative grammar. The grammar consists of a lexical units set of various types and the rules or productions set of expression constructing. Grammar has a vocabulary V, which is the set of lexical units for language expressions building. Some of lexical units of vocabulary (terminal) can not be replaced by other lexical units. The text realizes structural submitted activities through provides subject, object, process, purpose, means and results that appear in content, structural, functional and communicative criteria and parameters. The units of internal organization of the text structure are alphabet, vocabulary (paradigmatics), grammar (syntagmatic) paradigm, paradigmatic relations, syntagmatic relation, identification rules, expressions, unity between phrasal, fragments and blocks. On the compositional level are isolated sentences, paragraphs, sections, chapters, under the chapter, page etc. that (except the sentence) indirectly related to the internal structure because are not considered. With the help of a database (database for terms/morphemes and structural parts of speech) and defined rules of text analysis searching terms. Parsers operate in two stages: lexemes content identifying and a parsing tree creates.

Keywords: text, a Ukrainian, algorithm, content monitoring, keywords, linguistic analysis, parsing, generative grammar, structured scheme sentences, information linguistic system.

REFERENCES

1. Glushkov V., Tseitlin G., Yushchenko E. Methods symbolic multiprocessing. Kiev, Science, Dumka, 1980, 252 p.

2. Glushkov V., Tseitlin G., Yushchenko E. Algebra. Languages. Programming. Kiev, Science, Dumka, 1989, 376 p.

3. Tseitlin G. Introduction to Algorithms. Kiev, Spotlight, 1999, 310 p.

4. Tseitlin G. Glushkov Algebra and theory of clones, Cybernetics and Systems Analysis, 2003, No. 4, pp. 48-58.

5. Tseitlin G. Structured programming tasks symbolic multiprocessing, Cybernetics, 1983, No. 5. pp. 22-30.

6. Tseitlin G. Parallelization algorithms for sorting, Cybernetics, 1989, No. 6, pp. 67-74.

7. Tseitlin G. Design sequential algorithms sorting, Programming, 1989, No. 3, pp. 3-21.

8. Yushchenko E., Tseitlin G., Gritsay V., Terzian T. Multilevel structural design program: Theoretical Foundations, tools. Moscow, Finances and Statistics, 1989, 208 p.

9. Kaluzhnin L. On algorithmization mathematical problems, Probl. Cybernetics, 1959, Issue 2, pp. 51-69.

10. Martyniuk T., Homyuk B. Metodi that zasobi parallel peretvoren vector masiviv danih. Vinnitsa UNIVERSUM-Vinnitsa, 2005, 203 p.

11. Doroshenko A., Iovcev O. A method of designing an abstract data type in the algebra of algorithmics, Problems programuvannya, 2012, No. 1, pp. 3-16.

12. Akulovsky V. Some aspects of formalizing the architectural design phase algorithms, Problems programuvannya, 2009, No. 2, pp. 3-11.

13.Andon F., Doroshenko A., Tseitlin G., Yatsenko E. Algebroalgoritmicheskie models and methods of parallel programming. Kiev, Academperiodika, 2007, 634 p.

14. Iovcev V., Mohnitsa A. S. Tools algorithmic algebra platform WEB 2.0, Problems programuvannya, 2010, No. 2-3, pp. 547-556.

i Надоели баннеры? Вы всегда можете отключить рекламу.