Lex (software): Porovnání verzí

Smazaný obsah Přidaný obsah
m Přidána kategorie informatika
JAnDbot (diskuse | příspěvky)
m robot přidal: ko:Lex odebral: fr:Lex et yacc; kosmetické úpravy
Řádek 6:
Podobně jako většina takovéhoto softwaru, jsou i zdrojové kódy volně k dispozici. Lex je součástí operačního systému OpenSolaris a Plan 9 z Bell Labs. Jednou z dalších verzí je i Flex.
 
== Struktura lex souboru ==
 
Struktura je velice podobná souboru pro výše zmíněný [[yacc]]. Soubor je rozdělen do tří oblastí, oddělených dvoumi znaky procenta '%', jak ukazuje následující příklad.
Řádek 16:
''Oblast kódu v jazyce C''
 
* Oblast '''definice''' je určena pro difinici [[Makro_Makro (software)|maker]] a import [[Hlavičkový_souborHlavičkový soubor|hlavičkových souborů]] v jazyce [[Programovací_jazyk_CProgramovací jazyk C|C]]. Je zde možno zapsat i kód jazyka C, který bude bezezměn vložen do vygenerovaného souboru.
 
* Oblast '''pravidel''' je nejdůležitější, protože jsou zde umístěny vzory, které jsou v podstatě [[Regulární_výrazRegulární výraz|regulárními výrazy]]. Tyto vzory jsou zapsany v jazyce C a vykonány ve chvíli, kdy je nalezena schoda na vstupu s daným regulárním výrazem. Toto je základ toho jak lex funguje.
 
* Oblast '''kódu v jazyce C''' obsahuje příkazy a [[Funkce_Funkce (programování)|funkce]], které jsou bezezmněny zkopírovány do výsledného souboru. Příkazy jsou defakto kódem, který je volán pomocí daných pravidel z oblasti pravidel. Při využití ve velkých aplikacích je lepší tuto sekci umístit do externího souboru a ten nalikonkovat ve chvíli [[Překladač|překladu]].
 
== Příklad souboru pro lex ==
Následující kód je ukázkou vstupního lex souboru pro verzi [[Flex_lexical_analyserFlex lexical analyser|Flex]], která je jednou z verzí lexu. Dokáže rozpoznat řetězce čísel na vstupu a poté je zobrazit na výstupu.
 
<pre>/*** Oblast definice ***/
Řádek 63:
Saw an integer: 6
 
== Využití Lexu s jinými nástroji pro programování ==
=== Využítí Lexu společně se syntaktickým analyzátorem ===
Lex a syntaktické analyzátory, jako je například [[yacc]] nebo [[GNU_bisonGNU bison|Bison]], se často využívají společně. Analyzátor využívá [[Formální_gramatikaFormální gramatika|Formální gramatiku]] pro analýzu vstupu. Tato operace není snadno proveditelná pomocí lexu, který využívá [[Regulární_výrazRegulární výraz|regulární výrazy]]. Dále je omezen tím, že lex je [[Konečný_automat|konečný automat]]. Nicméně syntaktický analyzátor není schopen číst z prostého vstupu, vyžaduje sérii řícidích znaků. Lex je často používán, jako poskytovatel analyzátoru s těmito znaky.
 
== Související články ==
 
* [[Flex lexical analyser]]
* [[Yacc]]
 
== Související články v angličtině ==
 
* [[:en:Ragel|Ragel]]
* [[:en:Quex|Quex]]
* [[:en:List of C Sharp lexer generators|List of C# lexer generators]]
 
== Externí odkazy ==
* [http://www.mactech.com/articles/mactech/Vol.16/16.07/UsingFlexandBison/ Using Flex and Bison at Macworld.com]
 
{{překlad|en|Lex_(software)|350504908}}
Řádek 88:
 
[[de:Lex (Informatik)]]
[[en:Lex_Lex (software)]]
[[es:Lex (informática)]]
[[fa:لکس]]
[[fr:Lex et yacc]]
[[hu:Lex (informatika)]]
[[ja:Lex]]
[[frko:Lex et yacc]]
[[nl:Lex (computerprogramma)]]
[[pl:Lex (informatyka)]]