ParsecCore: A parser combinator library in the C# language
ParsecCore: Parsovací knihovna s kombinátory v jazyce C#
bakalářská práce (OBHÁJENO)
![Náhled dokumentu](/bitstream/handle/20.500.11956/183086/thumbnail.png?sequence=8&isAllowed=y)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/183086Identifikátory
SIS: 254235
Kolekce
- Kvalifikační práce [10926]
Autor
Vedoucí práce
Oponent práce
Šefl, Vít
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika se specializací Programování a vývoj software
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
29. 6. 2023
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
C#|csharp|parsování|kombinátor|syntaktická analýzaKlíčová slova (anglicky)
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.