Syntaxe (programovací jazyk)

Možná hledáte: Syntax přirozených jazyků.

informatice je syntaxe programovacího jazyka soubor pravidel, která definují kombinaci symbolů, které jsou považovány za správně strukturovaný dokument nebo fragment v tomto jazyce. To platí jak pro programovací jazyky, kde dokument představuje zdrojový kód, tak pro značkovací jazyky, kde dokument představuje data. Syntaxe jazyka definuje jeho povrchovou formu. Textové programovací jazyky jsou založeny na posloupnosti znaků, zatímco vizuální programovací jazyky jsou založeny na prostorovém uspořádání a spojení mezi symboly (které mohou být textové nebo grafické). Dokumenty, které jsou syntakticky neplatné, obsahují syntaktickou chybu.

Syntaxe – forma – je protikladem k sémantice – významu. Při zpracování programovacích jazyků, sémantické zpracování obvykle přichází po syntaktického zpracování, ale v některých případech je sémantické zpracování nezbytné pro dokončení syntaktické analýzy, a ty jsou prováděny společně nebo současně. V překladači, front-end (přední část) provádí syntaktickou analýzu, zatímco sémantickou analýzu provádí back-end (zadní část; a middle-end, pokud je tato fáze rozlišována).

Úrovně syntaxe

Syntaxe programovacího jazyka je obvykle rozdělena do tří úrovní.

  • Slova – lexikální úroveň, určuje jak znaky utváří tokeny
  • Fráze – gramatická úroveň, stručně řečeno, určuje, jak tokeny utváří fráze
  • Kontext – určuje na které objekty nebo proměnné názvy odkazují, jestli jsou typy validní, atd.

Rozdělení tímto způsobem přináší modularitu umožňující každé úrovni být popsána a zpracována samostatně a často nezávisle. Nejprve lexer převede lineární posloupnost znaků na lineární posloupnost tokenů, což je známo jako „lexikální analýza“ nebo „lexing“. Poté parser převede lineární posloupnost tokenů na hierarchický syntaktický strom, což je známo jako „syntaktická analýza“. Nakonec kontextová analýza překládá názvy a provádí typovou kontrolu.

Příklady chyb

Jako příklad, (add 1 1) je syntakticky validní zápis Lisp programu (za předpokladu, že funkce 'add' existuje), který sečte 1 a 1. Nicméně, následující zápisy jsou nevalidní:

(_ 1 1)    ; lexikální chyba: '_' není validní
(add 1 1   ; chyba parseru: chybějící závorka ')'
(add 1 x)  ; chyba jména: 'x' neexistuje

Všimněte si, že lexer není schopen rozpoznat první chybu – ví pouze to, že po vytvoření tokenu LEFT_PAREN '(' je zbytek programu neplatný, protože žádné lexikální pravidlo nezačíná '_'. Druhá chyba je zjištěna ve fázi parsování: parser identifikoval produkční pravidlo "seznam" kvůli tokenu '(' (jako jediná shoda), a proto může vydat chybové hlášení.

Typové chyby a chyby nedeklarovaných proměnných jsou někdy považovány za syntaktické chyby, pokud jsou zjištěny v době kompilace (což je obvykle případ kompilace silně typovaných jazyků), ačkoli je běžné klasifikovat tyto druhy chyb spíše jako sémantické chyby.

Například následující Python kód

'a' + 1

obsahuje typovou chybu – součet řetězce a čísla. To může být objeveno na úrovni parsingu (fáze analýzy), jestliže máme oddělená pravidla pro „řetězec + řetězec“ a „číslo + číslo“, ale obvykle to bude místo toho analyzováno obecným pravidlem jako „LiteralNeboIdentifikator + LiteralNeboIdentifikator“ a pak budou chyby odhaleny ve fázi kontextové analýzy, kde dochází k typové kontrole. V některých případech nemůže být toto ověření provedeno a tyto syntaktické chyby jsou detekovány až za běhu.

V dynamicky typovaném jazyce, kde typ je určován až za běhu, mohou být typové chyby často detekovány až za běhu. Následující Python kód

a + b

je nejednoznačný, a protože je syntakticky správně na úrovni fráze, může být validita ověřena až za běhu, protože proměnné v Pythonu nemají typ, ten mají pouze hodnoty.

Definice syntaxe

Syntaxe textových programovacích jazyků je obvykle definována využitím kombinace regulárních výrazů (pro lexikální strukturu) a Backusovy-Naurovy formy (pro gramatickou strukturu) k indukčnímu stanovení syntaktických kategorií (neterminály) a terminálních symbolů.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Syntax (programming languages) na anglické Wikipedii.

Související články


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/Syntaxe_(programovací_jazyk)
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.