Interaktivní generátor syntaxe heterogenních datových struktur - Kotraš, Martin (Vysoké učení technické v Brně. Fakulta informačních technologií, 2020)
V dnešní době jsou softwarové systémy často skládány z několika komponent předávající si data různými komunikačními kanály. I přes to, že existuje řada standardizovaných formátů kódování dat, vývojáři stále vytváří své vlastní většinou s ohledem na specifické použití jimi vytvářeného softwaru. Jednou ze zásadních částí ověření kvality nebo minimalizace chyb z přenosu dat je validace vstupních dat. Prvním krokem k validaci je formalizace jazyka popisující datové struktury. Nejobecnějším formalismem pro tyto účely je gramatika jazyka ve standardním popisu, např. BNF, ABNF, nebo EBNF. Tvorba gramatiky specifického jazyka však může být krok, který je citlivý na vznik chyby pro nezkušeného vývojáře. Cílem tohoto projektu je jednoduchá aplikace pro tvorbu gramatiky ze vzorku dat. V práci je řešeno generování gramatiky a následných validačních kousků kódu z nahraného ukázkového řetězce jazyka, např. zdrojového kódu programovacího jazyka. Problém řeší uživatel aplikace postupným označováním částí nahraného řetězce, jejich pojmenováním a přiřazováním vlastností. K tomu mu dopomáhají nástroje na rozdělování pravidel, slučování prefixů a/nebo sufixů pravidla, vytváření seznamů a optimalizaci výsledných pravidel. V rámci práce vznikla jednostránková webová aplikace, která při testování na jazycích JSON a XML dokázala poměrně dobře obstát a bylo možné tak vytvořit obecnější gramatiku i přes problémy se slabým syntaktickým analyzátorem. Díky této práci tak mohou i méně zkušení uživatelé vytvářet obecnější gramatiky jejich řetězců a používat je pro validaci. Práce navíc dává základ pro další zkoumání v této oblasti a je otevřená pro další vylepšení.

Today, software systems are often composed of several components that transmit data through various communication channels. Despite the fact that there are a number of standardized data encoding formats, developers still create their own mostly with regard to the specific use of the software they create. One of the essential parts of quality verification or minimization of data transmission errors is the validation of input data. The first step to validation is to formalize a language describing data structures. The most general formalism for these purposes is the grammar of the language in the standard description, e.g. BNF, ABNF, or EBNF. However, creating a language-specific grammar can be a step that is sensitive to error for an inexperienced developer. The aim of this project is a simple application for creating grammar from a sample of data. The work solves the generation of grammar and validation code snippets from the sample string of the language, e.g. the source code of the programming language. The user solves the problem by sequentially marking parts of the uploaded string, naming them, and assigning properties to them. This is aided by tools for splitting rules, merging rule prefixes and/or suffixes, creating lists, and optimizing the resulting rules. As part of the work, a single-page web application was created, which was able to pass relatively well when tested on JSON and XML, and it was possible to create a more general grammar despite the problems with a weak parser. Thanks to this work, even less experienced users can create more general grammars of their strings and use them for validation purposes. In addition, the work provides a basis for further research in this area and is open to further improvement.
Interactive Generator of Syntax of Heterogeneous Data Structures
Keywords: bezkontextová gramatika; formální jazyky; ABNF; validátor; generátor syntaxe; metadata; React; Redux; context-free grammar; formal languages; ABNF; validator; syntax generator; metadata; React; Redux