AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Kniha návštev     Amiga na PC     Amiga Forever  

Princip překladu programu

Jan Skýpala

Dva články Flex a Bison (v příštím čísle) souvisí s tvorbou překladače, a tak si nastiňme alespoň základy této problematiky.

Jak je známo, počítač neumí pracovat se slovy, ale pouze s čísly. Navíc většinou disponuje jen omezeným množstvím operací, které je schopen s těmito čísly provést. Lidem však pamatovaní si čísel dělá problémy (málokdo si je schopen zapamatovat více čísel než datum narození sebe a nejbližších, číslo občanky, rodné číslo a telefon domů a do práce). A tak se v komunikaci s počítačem používají různé jazyky, které jsou pak přeloženy do počítači srozumitelné podoby. Mezi takové jazyky patří jednak všechny programovací jazyky (Céčko, Basic, ARexx...), ale i speciální jazyky například pro přípravu dokumentů (LaTeX, HTML, AmigaGuide...) a i třeba shellovské skripty jsou jazykem.
Program, který zpracovává nějaký jazyk se pak nazývá překladačem. To, co pak na základě vstupního programu provede, dělí překladače na dvě kategorie. Bud může vygenerovat ekvivalentní program v jiném jazyce (nejčastěji assembleru - překladače céčka, ale i třeba v nějakém pseudokódu překladače jazyka Java) a nebo může vykonávat akce požadované programem (např. ARexx nebo Shell). První kategorie se pak opět nazývá překladače, kdežto druhá interprety.
Jak se dá odtušit, obě dvě kategorie mají společnou část, ve které na základě analýzy vstupujícího programu musí zjistit, co program provádí. Tato část se nazývá analytická. Druhá část, kterou se tyto kategorie liší, se pak nazývá buď syntetická (na základě analýzy je vytvářen nový program) nebo interpretační (program je vykonáván). Dále se zaměřme na společnou, tj. analytickou část.
V dřevních dobách vznikalo velké množství programovacích jazyků a každý psal analytické části jak uměl. Postupem doby se pochopitelně přišlo na to, že některé postupy jsou vhodnější než jiné, celý problém byl zastřešen teorií, která se dnes učí na vysokých školách. Problém struktury vstupu byl nazván Formálními jazyky a gramatikami a rozděluje nám vstupující jazyky do několika tříd a podle nich potom uvádí nejvhodnější metody na implementaci jejich zpracování.
Bylo zjištěno, že analytickou část je vhodné rozdělit do tří menších částí. První, tzv. lexikální analýza čte přímo vstupující text a rozpoznává v něm základní jednotky, tj. například číslice, operátory, klíčová slova, jména proměnných apod. Syntaktická analýza zpracovává tzv. první interní formu, to je výstup lexikální analýzy a v té rozpoznává ucelené bloky (např. výrazy, podmínky, smyčky apod.). Syntaktická analýza toho již zvládne docela hodně, odhalí i mnoho chyb v programu, ale ještě nedokáže zajistit vše. Mezi tyto činnosti patří například typová kontrola (aby se třeba s integerovou proměnnou nemohlo pracovat jako s polem). Tuto poslední část zajišťuje takzvaná sémantická analýza, která k jednotlivým prvkům druhé interní formy již jen připojuje atributy o jejich vlastnostech (např. k proměnné právě její typ).
Postupem času se přišlo na to, že první a druhá část analýzy jsou snadno mechanicky zpracovatelné pro téměř jakýkoliv vstup - téměř nezáleží na tom, jak vypadá zápis vstupujícího programu. A tak vzniklo mnoho nástrojů pro automatizaci těchto procesů. Takže vznikly nové jazyky pro popis vstupujícího jazyka a ty jsou potom novými překladači přeloženy do nějakého programovacího jazyka (nejčastěji céčka). Nejznámějším programem, který umí generovat rutiny pro lexikální analýzu, je program lex, resp. jeho volně šířitelná varianta flex z GNU distribuce. Program yacc (yet another compiler compiler = ještě jeden překladač překladače) je zase nejznámějším programem pro automatické vytváření rutin pro syntaktickou analýzu. Jeho nová a vylepšená varianta z GNU distribuce se jmenuje bison.

Vytlačiť článok


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )