Syntaktická analýza: Porovnání verzí
Smazaný obsah Přidaný obsah
m r2.7.1) (robot přidal: ar:التحليل النحوي |
m Kategorie. |
||
Řádek 1:
[[Soubor:Parsing-example.png|thumb|right|Příklad syntaktické analýzy matematického výrazu.]]
'''Syntaktická analýza''' (slangově podle [[Angličtina|angličtiny]] též ''parsování'' nebo ''parsing'') se v
Program, který vykonává tuto úlohu, se nazývá '''syntaktický analyzátor''' (slangově ''parser'').
Řádek 7:
Syntaktickou analýzou se transformuje vstupní text do [[datová struktura|datové struktury]], většinou [[strom (graf)|stromu]], jenž je vhodný pro pozdější zpracování a který zachovává hierarchii vstupních dat.
Vstupním krokem syntaktické analýzy je zpravidla [[lexikální analýza]], při níž se ze vstupního textu vytváří posloupnost tzv. ''[[token]]ů'', tedy elementárních nositelů významu v
Existují i programy, schopné ze specifikace [[programovací jazyk|programovacího jazyka]] zapsaného v
== Lidské jazyky ==
Řádek 15:
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á.
Pro syntaktickou analýzu lidského jazyka musí být nejprve stanovena příslušná formální gramatika. Volba její syntaxe závisí na záměrech jednak lingvistických, jednak implementačních. Některé analytické systémy například používají [[lexikálně-funkční gramatika|lexikálně-funkčních gramatik]], ovšem v
Moderní syntaktické analyzátory bývají alespoň částečně [[Statistika|statistické]], tedy opírají se o korpus dat, která byla analyzována ručně. Pomocí takového korpusu může program získat informace o frekvenci výskytu různých gramatických konstrukcí ve specifických kontextech (viz též [[strojové učení]]). Používané metody zahrnují [[Pravděpodobnostní bezkontextová gramatika|pravděpodobnostní bezkontextové gramatiky]], [[Metoda maximální entropie|metodu maximální entropie]] a [[neuronové sítě]]. Většina úspěšnějších systémů užívá metody lexikální statistiky, tj. posuzuje slova v
Algoritmy pro syntaktickou analýzu přirozených jazyků musí zacházet s
== Programovací jazyky ==
Syntaktické analýzy se obvykle užívá při [[Kompilace (programování)|kompilaci]]. Kompilátor nejprve syntakticky analyzuje [[zdrojový kód]] programu, napsaný v
Programovací jazyky bývají specifikovány [[Bezkontextová gramatika|bezkontextovými gramatikami]], protože pro ty se dá vytvořit rychlý a efektivní syntaktický analyzátor. Ten však obvykle nebývá programován ručně, nýbrž generován zvláštním programem, tzv. [[parser generátor]]em, na základě předepsané gramatiky.
Bezkontextové gramatiky zpravidla nejsou schopny vyjádřit vše, co jazyk vyžaduje. Zjednodušeně se dá říci, že bezkontextově vyjádřený jazyk má omezenou paměť. Bezkontextová gramatika nemá prostředky k
<!--
prosím případné spolupřekladatele, aby překládali jen to, čemu rozumějí!!! (Mmh)
=== Overview of process ===
The following example demonstrates the common case of parsing a computer language with two levels of grammar: lexical and syntactic.
The first stage is the token generation, or [[lexical analysis]], by which the input character stream is split into meaningful symbols defined by a grammar of [[regular expression]]s. For example, a calculator program would look at an input such as
The next stage is syntactic parsing or syntactic analysis, which is checking that the tokens form an allowable expression. This is usually done with reference to a [[context-free grammar]] which recursively defines components that can make up an expression and the order in which they must appear. However, not all rules defining programming languages can be expressed by context-free grammars alone, for example type validity and proper declaration of identifiers. These rules can be formally expressed with [[attribute grammar]]s.
Řádek 45:
== Typy syntaktické analýzy ==
Úkolem syntaktického analyzátoru je zjistit, zda a jak je možno vstupní text vygenerovat z
* [[LL syntaktický analyzátor|Syntaktická analýza shora dolů]] — Parser začíná počátečním symbolem a snaží se převést jej na vstup. Schematicky řečeno začíná největšími prvky, které postupně rozbíjí na menší části, dokud se nedostane k
* [[Syntaktická analýza zdola nahoru]] — Parser začíná vstupním textem a snaží se jej převést na počáteční symbol. Prakticky tedy hledá nejprve pravidla, která obsahují dané terminální symboly, pak pravidla, která mohou takovým pravidlům předcházet atd. Příkladem syntaktické analýzy zdola nahoru je [[LR analýza]]. Jiný termín pro tento druh syntaktické analýzy je {{cizojazyčně|en|shift-reduce parsing}} (doslova „posuň-zmenši“, česky označováno jako „přesun-redukce“).
Řádek 53:
== 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]]
== Externí odkazy ==
* [http://www.cs.vu.nl/~dick/PTAPG.html Parsing Techniques - A Practical Guide] - kniha podle Dick Grune a Ceriel J.H. Jacobs, dostupná v
<!--
== Příklady syntaktických analyzátorů (parserů) ==
=== Parsery se syntaktickou analýzou ''shora dolů'' ===
Některé z
* [[Recursive descent parser]]
* [[LL parser]]
Řádek 72 ⟶ 79:
* [[Earley parser]]
-->
<!--
=== Parsery se syntaktickou analýzou ''zdola nahoru'' ===
Některé z
* [[Precedence parser]]
** [[Operator-precedence parser]]
Řádek 87 ⟶ 96:
== See also ==
===Parsing concepts===▼
▲=== Parsing concepts ===
* [[Chart parser]]
* [[Compiler-compiler]]
Řádek 94 ⟶ 106:
* [[Shallow parsing]]
=== Parser Development Software ===
See also: [[List of Parsers]] comparison table.
==== Free Software ====
* [[ANTLR]]
* [[GNU bison|Bison]]
Řádek 108 ⟶ 123:
* [[Spirit Parser Framework]]
* [[Yacc]]
===== Wikimedia =====
* [[m:Help:ParserFunctions|Help:ParserFunctions]]
==== Commercial ====
* [[LRgen]]
* [[Visual BNF]]
Řádek 118 ⟶ 136:
<!-- //pův. text
'''Parsování''' ({{cizojazyčně|en|parsing}}) v
Program nebo jeho část, která parsování provádí, se nazývá '''parser'''.
== 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
*Parser vždy ví, který element zrovna načítá.
*Parsování je pomalejší než načítání prostého textu nebo binárního proudu, protože musí zkoumat každý znak.
Řádek 133 ⟶ 152:
[[Kategorie:Formální jazyky]]
[[Kategorie:Zpracování přirozeného jazyka]]
[[Kategorie:Algoritmy]]
[[id:Parsing]]▼
[[ar:التحليل النحوي]]▼
[[ca:Analitzador sintàctic]]
[[de:Parser]]
[[en:Parsing]]
[[es:Analizador sintáctico]]
[[fa:تجزیه کننده]]▼
[[fi:Jäsennin]]▼
[[fr:Décomposition analytique]]
[[hr:Parsiranje]]
[[hu:Elemző (informatika)]]▼
▲[[id:Parsing]]
[[it:Parsing]]
▲[[hu:Elemző (informatika)]]
[[ja:構文解析]]▼
[[ko:구문 분석]]▼
[[mk:Парсер]]▼
[[nl:Parser]]
[[pl:Analizator składniowy]]
[[pt:Análise sintática (computação)]]
[[ro:Parsare]]
▲[[fi:Jäsennin]]
[[sv:Parser]]▼
▲[[mk:Парсер]]
[[ru:Синтаксический анализ]]
[[sr:Parsiranje]]
▲[[sv:Parser]]
[[ta:இலக்கணப் பாகுபடுத்தி]]▼
[[uk:Синтаксичний аналіз]]
▲[[ar:التحليل النحوي]]
▲[[fa:تجزیه کننده]]
▲[[ta:இலக்கணப் பாகுபடுத்தி]]
[[zh:語法分析器]]
▲[[ja:構文解析]]
▲[[ko:구문 분석]]
|