Az Oz/Mozart programozási nyelv

Nyelvi elemek

Nyelvi elemek

Az Oz programozási nyelvnek egy kicsi, jól meghatározott magja van, amire rengeteg szintaktikai cukrot helyeztek a könnyű kezelhetőség miatt.

Jelkészlet

A nyelvben a programok az ISO 8859-1 (Latin-1) szabványnak megfelelő karakterek sorozatai, tehát a kódokban használhatóak ékezetes és egyéb speciális karakterek. A nyelv különbséget tesz a kisbetűs és a nagybetűs karakterek között.
A programok elhatároló jelei a következők: tab (code 9), newline (code 10), vertical tab (code 11), form feed (code 12), carriage return (code 13), blank (code 32).

Azonosítók A kulcsszavak, változók, függvények, eljárások nevének megadása az alábbi leírásnak megfelelően történhet: A leírásban <bármely karakter> jelöli az ISO 8859-1 szabványnak megfelelő karakterek halmazát, NUL pedig a 0 kódú ISO karaktert.
<kulcsszó> ::= andthen | at | attr | case | catch | choice | class | cond | declare | define | dis | div | else | elsecase | elseif | end | export | fail | false | feat | finally | from | fun | functor | if | import | in | local | lock | meth | mod | not | of | or | orelse | prepare | proc | prop | raise | require | self | skip | then | thread | true | try | unit | ( | ) | [ | ] | { | } | | | # | : | ... | = | . | = | ^ | []| $ | ! | _ | ~ | + | - | * | / | @ | <- | , | !! | <= | == | \= | < | =< | > | >= | =: | \=: | <: | =<: | >: | >=: | :: | ::: <nagybetű> ::= A | ... | Z | À | ... | Ö | Ø | ... | Þ <kisbetű> ::=a | ... | z | á | ... | ö | ø | ... | ÿ <számjegy> ::= 0 | … | 9 <nemnulla> ::= 1 | … | 9 <oktális> ::= 0 | … | 7 <hexadecimális> ::= 0 | … | 9 | A | … | F | a | … | f <bináris> ::= 0 | 1 <alfanumerikus> ::= <nagybetű> | <kisbetű> | <számjegy> | _ <atom karakter> ::= <bármely karakter> - (′ | \ | NUL) <változókarakter> ::= <bármely karakter> - (‛ | \ | NUL) <string karakter> ::= <bármely karakter> - („ | \ | NUL) <escape karakter> ::= a | b | f | n | r | t | v | \ | ‛ |” | ′ | & <pszeudokarakter> ::= \<oktális> <oktális> <oktális> | \(x | X) <hexadecimális> <hexadecimális > | \< escape karakter > <atom> ::= <kisbetű> { <alfanumerikus> } - <kulcsszó> | ′{ <atom karakter> | <szeudokarakter >}′ <változónév> ::= <nagybetű> { <alfanumerikus> } | ‛{<változókarakter> | <pszeudokarakter>}‛ <függvénynév> ::= {<atom>} <eljárásnév> ::= {<atom>} <string> ::= „{ <string karakter> | <pszeudokarakter> }” <karakter> ::= & (<bármely karakter> - ( \ | NUL) | <pszeudokarakter>) <egész> ::= [~] ( 0 | <nemnulla> {<számjegy>}) | [~] 0 {<oktális>}+ | [~] 0 (x | X) {<hexadecimális>}+ | [~] 0 (b | B) {<bináris >}+ <lebegőpontos> ::= [~] {<számjegy>}+ . {digit} [ (e | E) [~] {<számjegy>}+ ]
Megjegyzések:
Az „ ‛ ′ közti különbség:
′\n′ egy atomot jelent, tehát függvény, eljárás teljes neve lehet, illetve annak egy része.
‛\n‛ egy változó neve, illetve annak egy része
„\n” egy sztring, ami megfelel a sorvége jelnek

Egész számok megadásának különböző módjai:
A -31 megadására négy lehetőség adott:
Decimális alakban: ~31
Oktális alakban: ~037
Hexadecimális alakban: ~0x1F vagy ~1X1F
Bináris alakban: ~0b11111 vagy ~0B11111

Néhány gyakran használt azonosító:
Browse - megmutatja egy kifejezés értékét
Literálok

Minden sztring literált „” párok között kell megadni, így bármely vezérlőkarakter használata megengedett azokban.
Speciálisan minden kifejezésnek van virtuális string értéke, amit a # karakterek között lehet lekérni. Például:
"Contains "#also#" numbers: "#(1#' '#2.045)
Megfelel a következő stringnek:
"Contains also numbers: 1 2.045"

Megjegyzések

% komment az aktuális sor vagy a fájl végéig
/* */ párok közt írt, akár többsoros komment
A fordítás a fent említett elhatároló karaktereket és kommenteket csak a kód szavainak elválasztásának erejéig veszi figyelembe. Erre a célra alkalmas még az elhatároló karakterek és kommentek sorába nem besorolható ? karakter.