
У једном прототипском решењу Monaco едитор се извршава у веб прегледачу, док се Python језички сервер реализован помоћу pygls-а и textX-а покреће локално и са едитором комуницира посредством WebSocket везе. Реализовани прототип ограничен је на једног корисника и један рачунар. Аутор разматра и вишекориснички веб сценарио, али га не реализује, јер би захтевао додатну инфраструктуру за управљање сесијама, изолацију корисника и безбедност [6].

Ни textX-LS ни описана интеграција са Monaco едитором не омогућавају рад са textX-ом у веб прегледачу без локалног Python окружења.
1. АРХИТЕКТУРА И ИМПЛЕМЕНТАЦИЈА
1.1. Организација система
Решење је реализовано као једностранична веб апликација са два повезана Monaco едитора. Први је намењен textX граматици, а други текстуалном моделу написаном у језику који та граматика дефинише. Главна нит апликације управља корисничким интерфејсом, стањем едитора и приказом резултата, док се језичка обрада извршава у засебном веб раднику. Главне компоненте и њихове везе приказане су на слици 1.

Слика 1. Главне компоненте веб окружења и LSP комуникација преко веб радника
Језички клијент у главној нити комуницира са веб радником асинхроном разменом порука. За LSP комуникацију употребљен је пакет monaco-languageclient, а поруке између клијента и језичког сервера преносе се посредством интерфејса веб радника. За операције које нису обухваћене LSP-ом, попут визуелизације граматике и модела, размењују се посебне поруке које садрже тип захтева и резултат у унапред дефинисаном формату. Веб радник нема директан приступ елементима странице, већ резултате враћа главној нити, која ажурира едиторе, статусе и дијалоге.
Стање граматике и модела одржава се одвојено, али измена једног документа покреће проверу њиховог заједничког стања, пошто исправност модела зависи од актуелне граматике. Корисник тако може упоредо да мења правила језика и посматра њихов утицај на конкретан модел. Рад окружења приказан је на примеру ЈСД-а за навигацију дронова, у којем текстуални модел представља низ команди за опис плана лета. Главни екран апликације приказан је на слици 2.
Слика 2. Главни екран апликације са исправном граматиком и моделом
1.2. Извршавање језичке обраде и LSP комуникација
Извршавање Python кода у прегледачу омогућено је Pyodide-ом [7], дистрибуцијом Python-а заснованом на WebAssembly-ју, преносивом бинарном формату који служи као циљ превођења за различите програмске језике [8]. При покретању апликације
Komentari
Učitavanje komentara...