Developing a Back-end Compatibility Check for the BNF Converter
Loading...
Download
Date
Authors
Type
Examensarbete för masterexamen
Master's Thesis
Master's Thesis
Model builders
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
There exist various architectural models for structuring large-scale software projects. A common pattern employed in various systems involves decomposing the application into a user-facing front-end component, responsible for input validation, and several back-end components, which perform subsequent processing and generate output. In such a system, each back-end may target a distinct output format. Communication between the front-end and the back-ends is typically conducted by means of a well-defined interface.
It is often desired that the front-end be responsible for all input validation, so as to promote encapsulation and enforce uniform communication to the user. However, difficulties may arise when the back-ends impose different requirements on the input that they process.
This thesis examines this problem in the context of the BNF Converter – a compiler construction tool that transforms a common grammar specification into software components used for implementing a compiler for the language of said grammar. The BNF Converter adheres to the aforementioned architectural model and supports multiple back-ends that target various output formats and are characterized by distinct capabilities and requirements with respect to the input.
In order to address these discrepancies, a so-called back-end compatibility check was developed. This check enables the front-end to validate whether a given input conforms to the requirements imposed by a particular back-end. The methodology used for this purpose is expected to generalize to other systems exhibiting a similar structure. Additionally, a new back-end was implemented, both to evaluate the usefulness of the interface and to contribute to the development of the BNF Converter itself.
Description
Keywords
BNF, Programming Languages, Lexing, Parsing, Parser Generators
