Syntaktická analýza: Porovnání verzí

Smazaný obsah Přidaný obsah
Narovnání přesměrování kalkulátor
JAnDbot (diskuse | příspěvky)
m robot: přidáno {{Autoritní data}}; kosmetické úpravy
Řádek 1:
{{Různé významy|redirect=Parser|druhý=programovacím jazyku|stránka=Parser (programovací jazyk)}}
[[Soubor:Parsing-example.png|thumbnáhled|rightvpravo|Syntaktická analýza použitá pro převod zápisu matematického výrazu na [[syntaktický strom]].]]
'''Syntaktická analýza''' (slangově podle [[Angličtina|angličtiny]] též ''parsování'' nebo ''parsing'') se v [[Informatika|informatice]] a v [[Lingvistika|lingvistice]] nazývá proces analýzy posloupnosti formálních prvků s cílem určit jejich gramatickou strukturu vůči předem dané (byť ne nutně explicitně vyjádřené) [[Formální gramatika|formální gramatice]].
 
Řádek 12:
 
== Lidské jazyky ==
 
Při některých metodách počítačového zpracování lidského jazyka se používá počítačových programů, které dokáží lidský jazyk syntakticky analyzovat. Tento úkol je dosti ztížen skutečností, že stavba lidského jazyka je zpravidla velmi nejednoznačná.
 
Řádek 22 ⟶ 21:
 
== Programovací jazyky ==
 
Syntaktická analýza je důležitou částí zpracování programů při jejich překladu (kompilaci) nebo interpretaci. Zatímco [[interpret (software)|interpret]] provádí výpočet (interpretaci) nad datovými strukturami vytvořenými analýzou programu napsaném v určitém [[programovací jazyk|programovacím jazyce]], [[Překladač|kompilátor]] z těchto datových struktur generuje program v cílovém jazyce, který lze (po dalších úpravách) interpretovat hardwarovým nebo virtuálním [[Mikroprocesor|procesorem]].
 
Řádek 30 ⟶ 28:
 
=== Proces analýzy ===
 
Následující příklad demonstruje obvyklý postup analýzy programovacího jazyka se dvěma úrovněmi gramatiky: lexikální a syntaktickou.
 
Řádek 37 ⟶ 34:
Další fází je syntaktická analýza (parsing), při které se kontroluje, zda posloupnost symbolů tvoří povolený výraz. Na této úrovni je jazyk obvykle popsán [[bezkontextová gramatika|bezkontextovou gramatikou]], která rekurzivně definuje komponenty, z nichž lze složit výraz, a pořadí, ve kterém se musí objevit. Některá pravidla definující programovací jazyky nemohou být vyjádřena bezkontextovou gramatikou – problémy činí například typová kontrola a deklarace identifikátorů. Tato pravidla mohou být formálně vyjádřena pomocí [[atributová gramatika|atributové gramatiky]] a jejich dodržování se prakticky kontroluje pomocí [[tabulka symbolů|tabulky symbolů]].
 
Poslední fází je [[sémantická analýza]], která zjišťuje význam jednotlivých částí datové struktury a přiřazuje jim příslušné akce. V případě [[Kalkulačka|kalkulátorkalkulátoru]]u mohou být těmito akcemi např. ukládání konstant na [[Zásobníkový počítač|zásobník]] nebo provedení určité aritmetické operace; v případě [[překladač]]e je akcí generování fragmentů [[Strojový kód|kódu]]. Pro definování těchto činností lze použít [[překladová gramatika|překladovou gramatiku]].
 
== Typy syntaktické analýzy ==
 
Prakticky rozlišujeme syntaktickou analýzu přirozeného jazyka a počítačových jazyků. Dost podstatné rozlišení je, že přirozené jazyky se popisují obecnými, tj. nedeterministickými bezkontextovými gramatikami, kdežto počítačové jazyky jsou úmyslně navrženy a popsány jednoduššími deterministickými bezkontextovými gramatikami. Z toho plyne, že pro přirozené jazyky se používají nedeterministické analyzátory, které můžou vydat víc různých analýz jednoho slova/věty/vstupu. Samozřejmě jsou implementovány deterministicky, příklad je výše zmíněný CYK. Další část popisuje přístupy používané pro analýzu deterministických bezkontextových jazyků.
 
Řádek 53 ⟶ 49:
 
== Literatura ==
 
* Molnár, Ľudovít – Češka, Milan – Melichar, Bořivoj: ''Gramatiky a jazyky''. Bratislava : Alfa, 1987.
 
== Související články ==
 
* [[Syntaktická analýza zdola nahoru]]
* [[Syntaktická analýza shora dolů]]
 
== Externí odkazy ==
 
* [http://www.springerlink.com/content/w13211/?p=a68023f6a371448d98045422a2a25b50&pi=0#section=191939&page=1 Parsing Techniques – A Practical Guide]{{Nedostupný zdroj}} – kniha podle Dick Grune a Ceriel J.H. Jacobs, 2. vydání, dostupná online v nakladatelství Springer
 
Řádek 71 ⟶ 64:
 
=== Parsery se syntaktickou analýzou ''shora dolů'' ===
 
Některé z parserů se syntaktickou analýzou ''shora dolů'' zahrnují např.:
* [[Recursive descent parser]]
Řádek 83 ⟶ 75:
 
=== Parsery se syntaktickou analýzou ''zdola nahoru'' ===
 
Některé z parserů se syntaktickou analýzou ''zdola nahoru'' zahrnují např.:
* [[Precedence parser]]
Řádek 99 ⟶ 90:
 
=== Parsing concepts ===
 
* [[Chart parser]]
* [[Compiler-compiler]]
Řádek 107 ⟶ 97:
 
=== Parser Development Software ===
 
See also: [[List of Parsers]] comparison table.
 
==== Free Software ====
 
* [[ANTLR]]
* [[GNU bison|Bison]]
Řádek 125 ⟶ 113:
 
===== Wikimedia =====
 
* [[m:Help:ParserFunctions|Help:ParserFunctions]]
 
==== Commercial ====
 
* [[LRgen]]
* [[Visual BNF]]
Řádek 141 ⟶ 127:
 
== Odlišnosti od prostého načítání dat ==
 
*Jsou dopředu dána pravidla, popisující formát parsovaných dat.
*Data jsou zformátována na části, kterým se ve většině případů říká '''elementy'''. Většinou se (opět, podle daných pravidel) mohou některé elementy vyskytovat v jiných elementech.
Řádek 150 ⟶ 135:
Mezi nejjednodušší příklady parsování patří načtení [[CSV]] souboru, za komplexnější je většinou považováno zpracování [[XML]] souborů nebo zdrojových programů ve vyšších [[programovací jazyk|programovacích jazycích]].
//-->
{{Autoritní data}}
 
[[Kategorie:Syntaktická analýza| ]]