<div class="csl-bib-body">
<div class="csl-entry">Schwaiger, R. (2020). <i>Parsing of configuration files</i> [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2020.30142</div>
</div>
-
dc.identifier.uri
https://doi.org/10.34726/hss.2020.30142
-
dc.identifier.uri
http://hdl.handle.net/20.500.12708/13835
-
dc.description.abstract
Nahezu jede Applikation verwendet Konfigurationseinstellungen um ihr Verhalten einem spezifischen Kontext anzupassen. In immer komplexer werdenden Computersystemen kann die große Anzahl verschiedener Einstellungen leicht zu Fehlkonfigurationen führen. Die verschiedenen Möglichkeiten Softwaresysteme zu konfigurieren und die große Anzahl verschiedener Konfigurationsformate verbessert diese Situation sicherlich nicht. Elektra ist ein auf Plugins basierendes Konfigurationsframework, das Konfigurationseinstellungen in eine globale hierarchische Datenbank integriert und eine einheitliche Schnittstelle für diese anbietet um Fehlkonfigurationen zu vermeiden. Damit Elektra ohne oder nur mit geringen Modifikationen an einer Applikation arbeiten kann, muss es das Konfigurationsformat der Applikation verstehen. Um das zu bewerkstelligen verwendet Elektra ein auf Plugins basierendes System um Konfigurationsdateien in seine internen Datenstrukturen umzuwandeln. Veränderungen der internen Datenstrukturen werden dann zurückgeschrieben, um so die Konfiguration einer Applikation über Elektras Schnittstelle zu ändern. Nachdem eine Vielzahl von verschiedenen Konfigurationsformaten existiert, müssen wir uns Gedanken machen, wie wir diese mit möglichst geringem Aufwand syntaktisch analysieren, also parsen, können. Um zu untersuchen, welches System die beste Lösung für die Aufgabe des Parsens von Konfigurationsdateien liefert, analysieren wir zunächst erfolgversprechende Parsing-Techniken in einer Literaturrecherche. Als Beispielsyntax für weitere Untersuchungen verwenden wir ein Subset der populären Sprache YAML, das wir ursprünglich mit Hilfe der Daten einer Befragung von einigen Elektra-Entwicklern ermitteln wollten. Da das gewählte Subset aus Sicht der Syntaxanalyse uninteressante Eigenschaften mit hohem Entwicklungsaufwand aufweist und wegen Problemen mit der Aussagekraft der Umfrage spezifizieren wir schließlich das YAML-Subset selbst. Wir schreiben, generieren und integrieren Parsing-Code für 8 neue Elektra-Plugins und erweitern eines der existierenden Plugins. Schließlich vergleichen wir fünf der Parser-Plugins in einer detaillierten Untersuchung. Der Vergleich der Features der Parsersysteme zeigt, dass für unsere Beispielsprache ANTLR den größten Funktionsumfang und gute Fehlermeldungen liefert, ohne Grammatikänderungen zu benötigen. Während der Code des Generators weder die schnellste Laufzeit, noch den geringsten Speicherverbrauch aufweist, zeigen unsere Messungen eine angemessene Leistung. Um 10 000 Zeilen YAML zu konvertieren benötigt der Parser ungefähr 120ms auf unserem Testsystem.
de
dc.description.abstract
Almost any application uses configuration settings to adapt its behavior to specific contexts. In ever growing complex computer systems, the large amount of different settings for different software can easily lead to misconfiguration. The different methods to configure systems and the large amount of different configuration file formats does certainly not improve the situation. Elektra is a plugin-based configuration framework that integrates configuration settings into a global hierarchical database and provides a common interface for configuration settings to make misconfiguration less likely. For Elektra to work without, or with only minor modifications to an application it needs to understand the configuration file format of said application. To do that Elektra uses a plugin-based system to parse configuration files and convert them into its native data structures. Changes to these data structures are then written back, effectively changing the configuration of an application via Elektras interface. Since there exists a plethora of different configuration file formats we need to think how we can parse them with as little effort as possible. To evaluate which parsing system offers the best fit for the task of configuration file parsing, we first study promising techniques in a detailed literature research. As example syntax for further analysis we use a subset of the popular language YAML. Originally we wanted to determine this subset using data from a survey we conduct with some of Elektras developers. Since the chosen subset includes items with high development effort that are not interesting from a parsing point of view, and because of problems with the conclusiveness of the survey, we choose the implemented subset ourselves. We write, generate and integrate parsing code, creating 8 new Elektra plugins, and extend one of Elektras existing plugins in the process. We then compare five of our parser plugins in a detailed evaluation. The comparison of the various features of the parsing systems shows that for our example syntax ANTLR provides the most complete feature set and good error messages without requiring any changes to the grammar. While the parser generated by ANTLR was neither the fastest parser, nor the parser with the lowest memory overhead, the benchmarks in our comparison still show acceptable performance for our example data. To convert 10 000 lines of YAML the parser needs roughly 120ms on our test system.
en
dc.language
English
-
dc.language.iso
en
-
dc.rights.uri
http://rightsstatements.org/vocab/InC/1.0/
-
dc.subject
augeas
en
dc.subject
grammars
en
dc.subject
apache configuration
en
dc.subject
compiler
en
dc.subject
regular languages
en
dc.subject
toml
en
dc.subject
ini
en
dc.title
Parsing of configuration files
en
dc.title.alternative
Parsing von Konfigurationsdateien
de
dc.type
Thesis
en
dc.type
Hochschulschrift
de
dc.rights.license
In Copyright
en
dc.rights.license
Urheberrechtsschutz
de
dc.identifier.doi
10.34726/hss.2020.30142
-
dc.contributor.affiliation
TU Wien, Österreich
-
dc.rights.holder
René Schwaiger
-
dc.publisher.place
Wien
-
tuw.version
vor
-
tuw.thesisinformation
Technische Universität Wien
-
dc.contributor.assistant
Raab, Markus
-
tuw.publication.orgunit
E185 - Institut für Computersprachen
-
dc.type.qualificationlevel
Diploma
-
dc.identifier.libraryid
AC15544940
-
dc.description.numberOfPages
126
-
dc.identifier.urn
urn:nbn:at:at-ubtuw:1-133214
-
dc.thesistype
Diplomarbeit
de
dc.thesistype
Diploma Thesis
en
dc.rights.identifier
In Copyright
en
dc.rights.identifier
Urheberrechtsschutz
de
tuw.advisor.staffStatus
staff
-
tuw.assistant.staffStatus
staff
-
item.languageiso639-1
en
-
item.fulltext
with Fulltext
-
item.openaccessfulltext
Open Access
-
item.mimetype
application/pdf
-
item.openairetype
master thesis
-
item.grantfulltext
open
-
item.openairecristype
http://purl.org/coar/resource_type/c_bdcc
-
item.cerifentitytype
Publications
-
crisitem.author.dept
E311-01-3 - Forschungsgruppe Steuerungstechnik und integrierte Systeme