A Nice programozási nyelv

Nyelvi elemek

A NICE programozási nyelv lexikális elemei jórészt megegyeznek a JAVA nyelv elemeivel, így a továbbiakban itt a JAVA 1.4.2-es specifikáció lexikális elemeinek rövid referenciája következik. Az eredeti specifikáció szövege megtalálható ezen az internet címen.

Jelkészlet

A JAVA, és így a NICE programok is a UNICODE szabvány betűkészletét követik, a szabványról részletes leírás található a hivatalos honlapon: http://www.unicode.org, azonban a teljes program megadható ASCII karakterkészletben is, az esetleges extra UNICODE karakterek pedig megadhatók „Escape szekvenciák” segítségével, így az ASCII (ANSI X3.4) kódrendszer is használható a programszöveg elkészítéséhez.

Az UNICODE „escape szekvenciák” alakja a következő lehet:

UnicodeInputCharacter:
      UnicodeEscape
    | RawInputCharacter

UnicodeEscape:
    \ UnicodeMarker HexDigit HexDigit HexDigit HexDigit

 

UnicodeMarker:
    u
    | UnicodeMarker u

RawInputCharacter: 
    bármely UNICODE karakter

HexDigit: 
    0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 
    A | B | C | D | E | F | 
    a | b | c | d | e | f

A fenti specifikációban az „u”, „\”, és a hexadecimális számjegyek mind az ASCII kódkészletből valóak.

Sorelválasztó jelek

A UNICODE karakterek sorozatát a sorelválasztó jelek (line terminators) tördelik sorokra, amelyek a következőek lehetnek:

LineTerminator:
    ASCII „LF” karakter (újsor, soremelés)
    ASCII „CR” karakter (kocsivissza karakter)
    ASCII „CR” ASCII „LF” karaktersorozat

Ennek következtében a program bemeneti karaktereinek halmaza (input characters) a teljes UnicodeInputCharacter halmaz, kivéve a sorvége jeleket.

Bemeneti elemek, tokenek

A program bemeneti karaktereinek halmazát a fordítóprogram lexikálisan a továbbiakban bemeneti elemekként csoportosítja, amelyeket helyközök (whitespace) választanak el egymástól. A bemeneti elemek így két csoportba sorolhatóak tovább: megjegyzések (comments), tokenek. A helyközök alakja a következő lehet:

WhiteSpace:
    ASCII „SP” karakter (szóköz, space)
    ASCII „HT” karakter (tabulátor, horizontal tab)
    ASCII „FF” karakter (form-feed)
    LineTerminator

A helyközök, illetve megjegyzések használhatóak a bemeneti elemek szétvágására is, azaz ha többféleképpen elemezhető tokenként egy bemeneti karaktersorozat, akkor annak elválasztása megoldható helyközzel, illetve megjegyzéssel.

A tokenek további alosztályokba sorolhatóak:

Token:
    Identifier (azonosítók)
    Keyword (kulcsszavak)
    Literal (literálok)
    Separator (elválasztójelek)
    Operator (műveleti jelek, operátorok)

Azonosítók

Az azonosítók korlátlan hosszú JAVA karakterek sorozatai lehetnek, amelyek első karaktere mindenképp betű kell legyen. Egy azonosító neve nem lehet már létező kulcsszó, illetve beépített logikai, illetve az un. null-literál. A JAVA karakterek pontos specifikációja szintén megtalálható a JAVA specifikációban.

Kulcsszavak

Az alábbi ASCII karaktersorozatok számítanak a nyelv kulcsszavainak. Itt két csoportra osztva találhatóak a JAVA-val közös, illetve a NICE-ra nézve specifikus kulcsszavak:

JAVA kulcsszavak:

abstractdefaultifprivatethis
booleandoimplementsprotectedthrow
breakdoubleimportpublicthrows
byteelseinstanceofreturntransient
caseextendsintshorttry
catchfinalinterfacestaticvoid
charfinallylongstrictfpvolatile
classfloatnativesuperwhile
constfornewswitch
continuegotopackagesynchronized

NICE kulcsszavak (a JAVA-hoz képest megtalálható további kulcsszavak):

alike
var
let
requires
ensures

Literálok

A NICE nyelv a JAVA-ban megszokott literálokkal rendelkezik, ezek részletes dokumentációja szintén megtalálható a JAVA referenciában.

Operátorok

Elválasztójelek

Az elválasztójelek és parancstermináló jelek a következők:
Separator:
    ( | ) | { | } | [ | ] | ; | , | .

Megjegyzések

A megjegyzések alakja a következő lehet:
Comment:
    /* text */
    // text LineTerminator
(A részletesebb specifikációt lásd a JAVA specifikációban.)