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.
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.
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)
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.
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:
abstract | default | if | private | this |
boolean | do | implements | protected | throw |
break | double | import | public | throws |
byte | else | instanceof | return | transient |
case | extends | int | short | try |
catch | final | interface | static | void |
char | finally | long | strictfp | volatile |
class | float | native | super | while |
const | for | new | switch | |
continue | goto | package | synchronized |
NICE kulcsszavak (a JAVA-hoz képest megtalálható további kulcsszavak):
alike var let requires ensures
A NICE nyelv a JAVA-ban megszokott literálokkal rendelkezik, ezek részletes dokumentációja szintén megtalálható a JAVA referenciában.
Separator: ( | ) | { | } | [ | ] | ; | , | .
Comment: /* text */ // text LineTerminator(A részletesebb specifikációt lásd a JAVA specifikációban.)