Lexikální analýza: Porovnání verzí

Smazaný obsah Přidaný obsah
přidána lexikální gramatika
značka: lokální interwiki
Řádek 49:
Specifikace [[programovací jazyk|programovacího jazyka]] často obsahuje sadu pravidel, [[Lexikální gramatika|lexikální gramatiku]], která definuje lexikální syntaxi. Lexikální syntaxe je obvykle [[regulární jazyk]] s pravidly skládajícími se z [[regulární výraz|regulárních výrazů]]; ty definují sadu množinu možných posloupností symbolů, které jsou použity k vytvoření individuálních tokenů nebo [[lexém|lexémů]]. Lexer rozpoznává řetězce a pro každý nalezený druh řetězce lexikální analyzátor provádí akci, nejčastěji vytváří token.
 
Důležité a zároveň běžné lexikální skupiny jsou [[bílý znak|bílé znaky]], keré oddělují dva tokeny (<code>if x</code> x namísto <code>ifx</code>), a komentáře. Ty jsou rovněž definovány v gramatice a jsou zpracovávány lexerem, ale většinou jsou vyřazeny (neprodukují žádné tokeny) a jsou považovány za nepodstatné. Existují však dvě výjimky. Za prvé v [[en:off-side|off-side]] jazycích (jazyky založené na odsazení), ve kterých jsou bloky kódu odděleny pomocí odsazení, je počáteční bílý znak podstatný, poněvadž definuje strukturu bloku a je obecně řešen na úrovni lexeru. Za druhé v určitých využitích lexeru mimo překladač musejí být komentáře zachovány - například [[en:prettyprint|prettyprinter]]. V 1960s, především v jazyku [[ALGOL]], byly bílé mezery a komentáře eliminovány při fázi rekonstrukce řádků (počáteční fáze přední části překladače), ale tato dříve oddělená fáze je nyní prováděna samotným lexerem.
 
== Generátory lexikálních analyzátorů ==