ParsecCore: A parser combinator library in the C# language
ParsecCore: Parsovací knihovna s kombinátory v jazyce C#
bachelor thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/183086Identifiers
Study Information System: 254235
Collections
- Kvalifikační práce [11242]
Author
Advisor
Referee
Šefl, Vít
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Computer Science with specialisation in Programming and Software Development
Department
Department of Distributed and Dependable Systems
Date of defense
29. 6. 2023
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
C#|csharp|parsování|kombinátor|syntaktická analýzaKeywords (English)
C#|csharp|parser|combinator|syntax analysisV této práci implementujeme parsovací knihovnu pro C# inspirovanou Parsecem, která využívá parsovací kombinátory. Parsovací kombinátory od- kazují na styl syntaktické analýzy, při kterém je parser modelován jako funkce, která bere textový řetězec jako vstup a produkuje strukturovaný výsledek. Následně používáme funkce vyšších řádů, kterým se říká kombi- nátory, pro spojování jednoduchých perserů do komplexnějších. Knihovny založené na stejném principu již existují, avšak, v našem mínění, jsou v ně- kterých ohledech nedostačující. Naše implementace nemá tyto nedostatky a také obsahuje dva nové moduly, které pomáhají se syntaktickou analýzou jazyků, pro které odsazení je signifikantní, a také se syntaktickou analýzou permutací. Dále implementujeme dva příkladné parsery, abychom předvedli naši knihovnu.
In this thesis, we implement a parser combinator library in C# inspired by Parsec. Parser combinators refer to a style of parsing where a parser is modeled as function from string to some structured result. Afterward, higher-order functions called combinators are used to combine simple parsers into more complex ones. Other such libraries exist, but in our estimation, they contain various deficiencies. We create an implementation without these faults and also introduce two new modules for parsing indentation- sensitive languages and permutations. We additionally implement two ex- ample parsers to showcase our library.