Amiga E - I. díl
Lehce na úvod:
E je objektově orientovaný / procedurální / vyšší programovací jazyk
ovlivněný zejména jazyky jako je C++, Ada, Lisp atd. Je to jazyk s volným
formátem zápisu a jeho Amiga implementce je speciálně určena na programování
systémových aplikací. Množství funkcí a schopností tohoto jazyka je
skutečně velké.
Kompilátor je velmi rychlý - autor uvádí, že dokáže přeložit více než
20 000 řádek za minutu na 7-mi MHz Amize. Zabudovaný assembler a linker
umožňuje velmi jednoduchou kompilaci i velkých programů.
A takto vypadá 'Hello World' v E:
/* nominováno na na nejnudnější příklad... */
PROC main()
WriteF('Hello, World!\n')
ENDPROC
Autor:
Wouter van Oortmerssen
Levendaal 87
2311 JG Leiden
HOLLAND
Používání kompilátoru:
Syntaxe kompilátoru (systém 2.04+):
SOURCE/A,REG=NUMREGALLOC/N/K,LARGE/S,SYM=SYMBOLHUNK/S,NOWARN/S,
QUIET/S,ASM/S,ERRLINE/S,ERRBYTE/S,SHOWBUF/S,ADDBUF/N/K,IGNORECACHE/S,
HOLD/S,WB/S,LINEDEBUG/S,OPTI/S,DEBUG/S,NILCHECK/S:
Pro systémy 1.2 to 2.03:
EC [-opts] <sourcefile>
Jako příklad zkompilujeme program 'HelloWorld.e'. Kompilátor vytvoří
spustitelný soubor 'HelloWorld'.
10.ram:> cd e:src
10.E:Src> ec helloworld
AMIGA E Compiler/Assembler/Linker/PP v3.1i registered (c) '91-95 Wouter
lexical analysing ...
parsing and compiling ...
no errors
10.E:Src> helloworld
Hello, World!
10.E:Src> list
HelloWorld.e | 89 ----rwed Středa | 17:37:00 |
helloworld | 676 ----rwed Středa | 17:37:00 |
2 files - 4 blocks used | |
10.E:Src>
Poznámka: Kompilátor nesmí být používán jako residentní!
Jednotlivé argumenty jsou popsány v dokumentaci k Amiga E.
A nyní už něco o vlastním jazyku:
Dnes vás seznámím s formátem zápisu programů v "éčku". K opravdovému
programování se dostaneme až příště :-(.
Tabelátory, LF atd.
Zdrojové programy v AMIGA E jsou obyčejné ASCII texty, ve kterých konec
řádky (<LF>) a středník (;) jsou oddělovači jednotlivých příkazů.
Příkazy, které mají mnoho argumentů, mohou být rozděleny na několik
řádek, přičemž jednotlivé řádky se musí ukončit čárkou (nebo jiným
lexikálním prvkem, který se normálně nesmí oběvit na konci řádku). Pak je
následující znak konce řádku (<LF>) ignorován.
Jednotlivé lexikální elementy mohou být ve zdrojovém text navzájem
odděleny jednou nebo více mezerami, tabulátory, atd.
Komentáře
Komentáře se mohou vkládat kdekoli ve zdrojovém souboru, kam mohou být
normálně psány mezery. Začínají "/*" a končí "*/" a mohou být neomezeně
vnořovány. To samé platí i pro jednořádkové komentáře, které začínají "->"
a končí u prvního <LF>.
Příklad:
/* toto, je komentář */
-> a toto také.
Identifikátory a typy
Identifikátory jsou řetězce, kterými programátor označuje jednotlivé
objekty - tzn. proměnné, klíčová slova nebo jména funkcí.
Identifikátor se může skládat z:
- velkých a malých písmen
- číslic "0" až "9" (kromě prvního znaku)
- znaku "_" ("podtržítko")
K rozlišování jsou důležité všechny znaky, ale kompilátor sleduje
pouze první dva pro určení typu identifkátoru podle následujícího systému:
oba velké:
- klíčové slovo jako je IF, PROC atd.
- konstanta, jako je MAX_LENGTH
- instrukce assembleru, jako je MOVE
první malý:
- identifikátor proměnné/návěští/objektu adt.
první velký a druhý malý:
- zabudovaná systémová funkce, např. WriteF()
- volání knihovny, např. OpenWindow()
Všechny hodnoty v E jsou vypočítávány jako 32-bitové.
Způsob zápisu různých hodnot
- Desítková čísla (1)
- Desítková hodnota je sekvence znaků "0" až "9". Může jí předcházet
znaménko mínus "-" jako označení záporného čísla.
Příklady: 1, 100, -12, 1024
- Hexadecimální čísla ($1)
- Hexadecimální hodnota používá navíc ještě písmena "A" až "F" (nebo "a"
až "f") a musí být uvozena znakem "$".
Příklady: $FC, $DFF180, -$ABCD
- Binární čísla (%1)
- Binární čísla začínají znakem "%" a používají pouze číslice "1" a "0"
pro zadávání hodnot.
Příklady: %111, %1010100001, -%10101
- Reálná čísla (1.0)
- Reálná čísla se od normálních desítkových čísel pouze v tom, že
obsahují "." (tečku) pro oddělení jejich dvou čístí (celé a desetiné).
Pouze jedna z nich může být vynechána, nikoli obě dvě. Reálná čísla mají
odlišnou interní 32-bitovou representaci (IEEE) od běžných celých čísel.
Příklady: 3.14159, .1 (=0.1), 1. (=1.0)
- Znaky
- Znaky jsou krátké "řetězce" uzavřené mezi uvozovkami. Mohou obsahovat
maximálně čtyři znaky. (Znak je v éčku representován jako 32-bitové číslo.)
Příklady: "a", "BlAh"
- Řetězce ('bla')
- Řetězce jsou jakékoli ASCII texty, uzavřené v apostrofech ('). Hodotou
řetězce jako takového je ukazatel (pointer) na jeho první znak. Všechny
řetězce jsou v E okončeny nulou (zero byte - nulový byte).
Řetězce mohou obsahovat také zvláštní znaky uvozené zpětným lomítkem
("\"). Toto se používá pro znaky, které nemohou bý z nějakého důvodu
zobrazeny, nebo pro znaky využívané řetězcovými formátovacími funkcemi jako
jsou WriteF(), TextF() a StringF(), nebo Vprintf().
\n | konec řádky (ASCII 10, odřádkování)
\a nebo '' | apostrof ' (normálně používaný pro ohraničování řetězců)
\q | uvozovky " |
\e | escape (ASCII 27) |
\t | tabelátor (ASCII 9) |
\\ | zpětné lomítko \ |
\0 | zero byte - nula |
\b | carriage return (ASCII 13) |
Při použití ve formátovacích funkcích:
\d tisk decimálního čísla
\h tisk hexadecimálního čísla
\s tisk řetězce
\c tisk znaku
\z nastavení "fill byte" na znak'0' (např.: 0012)
\l zarovnání vlevo
\r zarovnání vpravo (poslední dva fungují jako přepínače)
Za kódy \d,\h a \s mohou následovat popisy tiskových polí:
[x] pole znaků o délce x (poč. znaků, který se bude tisknout vždy)
(x,y) minimální (x) a maximální (y) počet znaků (pouze u řetězců)
Příklad: tisk hexadecimálního čísla na 8 pozic s doplněním nulami:
WriteF('\z\h[8]\n', cislo)
Řetězec může přesahovat přez několik řádek spojíte-li je plusem "+".
Příklad:
'tohle je děsně dlouhej řetězec ' +
'rozdělenej na dvě řádky...'
A to je pro dnešek vše.
Čau...
E.N.I.F.
Další ve frontě:
|
|
|
|
|
|
|
|
Vokecávky |
Hardware | Warez | WBoviny | Dema |
Gfx&Muz | Pařby | Vokecávky 2 |