Podrobno

Jezikovni strežnik na osnovi inkrementalne LL sintaksne analize
ID Balant, Denis (Avtor), ID Slivnik, Boštjan (Mentor) Več o mentorju... Povezava se odpre v novem oknu

.pdfPDF - Predstavitvena datoteka, prenos (711,13 KB)
MD5: 842B339813DFECE2759B383C3BB0C759

Izvleček
Med urejanjem programa posamezna sprememba praviloma vpliva le na majhen del dokumenta. V diplomskem delu obravnavamo inkrementalno sintaksno in semantično analizo programov v učnem jeziku Prev, katere cilj je ponovno uporabiti čim več rezultatov predhodne analize. Sintaksni del temelji na inkrementalni LL(1) analizi. Njeno delovanje podrobno utemeljimo in jo razširimo z obnovo po napakah za obravnavo nepopolnih programov. Pri semantični analizi razreševanje imen izvedemo z drevesom dosegov, pri preverjanju tipov pa vpliv sprememb določimo na podlagi zabeleženih odvisnosti. Razvite postopke združimo v jezikovni strežnik za Prev, ki rezultate analize uporablja za podporo funkcionalnostim razvojnega okolja. Učinkovitost pristopa ovrednotimo na programih različnih velikosti in pri različnih vrstah sprememb ter pokažemo, da lahko inkrementalna analiza bistveno skrajša čas ponovne obdelave dokumenta.

Jezik:Slovenski jezik
Ključne besede:inkrementalna sintaksna analiza, LL(1) analiza, jezikovni strežnik, inkrementalna semantična analiza, razreševanje imen, preverjanje tipov
Vrsta gradiva:Diplomsko delo/naloga
Organizacija:FRI - Fakulteta za računalništvo in informatiko
Leto izida:2026
PID:20.500.12556/RUL-186431 Povezava se odpre v novem oknu
Datum objave v RUL:01.09.2026
Število ogledov:172
Število prenosov:46
Metapodatki:XML DC-XML DC-RDF
:
Kopiraj citat
Objavi na:Bookmark and Share

Sekundarni jezik

Jezik:Angleški jezik
Naslov:Language Server based on Incremental LL Parsing
Izvleček:
When a program is edited, an individual change typically affects only a small part of its structure. In this thesis, we present an approach to incremental syntax and semantic analysis of programs written in the educational language Prev, with the aim of reusing as many previously computed results as possible. For syntax analysis, we use an incremental LL(1) parser. We provide a correctness argument for the algorithm and extend it with simple table-driven error recovery to handle incomplete programs. Our semantic analysis is split into name resolution and type checking. Name resolution uses a scope tree, while type checking relies on recorded dependencies to determine which results need to be recomputed after a change. We integrate the resulting pipeline into a language server for Prev and evaluate its performance on programs of different sizes and under different types of changes, demonstrating that incremental analysis can significantly reduce the time required to reanalyze a program.

Ključne besede:Incremental Parsing, LL(1) Parsing, Language Server, Incremental Semantic Analysis, Name Resolution, Type Checking

Podobna dela

Podobna dela v RUL:
Podobna dela v drugih slovenskih zbirkah:

Nazaj