Details

Jezikovni strežnik na osnovi inkrementalne LL sintaksne analize
ID Balant, Denis (Author), ID Slivnik, Boštjan (Mentor) More about this mentor... This link opens in a new window

.pdfPDF - Presentation file, Download (711,13 KB)
MD5: 842B339813DFECE2759B383C3BB0C759

Abstract
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.

Language:Slovenian
Keywords:inkrementalna sintaksna analiza, LL(1) analiza, jezikovni strežnik, inkrementalna semantična analiza, razreševanje imen, preverjanje tipov
Work type:Bachelor thesis/paper
Organization:FRI - Faculty of Computer and Information Science
Year:2026
PID:20.500.12556/RUL-186431 This link opens in a new window
Publication date in RUL:01.09.2026
Views:170
Downloads:46
Metadata:XML DC-XML DC-RDF
:
Copy citation
Share:Bookmark and Share

Secondary language

Language:English
Title:Language Server based on Incremental LL Parsing
Abstract:
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.

Keywords:Incremental Parsing, LL(1) Parsing, Language Server, Incremental Semantic Analysis, Name Resolution, Type Checking

Similar documents

Similar works from RUL:
Similar works from other Slovenian collections:

Back