Icon/Kod źródłowy
Kod źródłowy programu w języku Icon to zwykły plik tekstowy. Choć jest to więc ciąg znaków, najbardziej elementarnymi składnikami programu (w sensie języka Icon) są pewne ustalone ciągi znaków, tj.
- identyfikatory
- nazwy pól
- słowa kluczowe
- słowa zarezerwowane
- stałe (literały)
- stałe numeryczne
- stałe znakowe
- separatory
- operatory i symbole
- białe znaki.
W języku Icon duże i małe litery są rozróżniane. W języku przyjęto zasadę, że ciągiem leksykalnym jest najdłuższy - zgody ze składnią Iconu - ciąg znaków.
Identyfikatory
edytujIdentyfikatory służą do oznaczania obiektów w programie, którymi w języku Icon są:
- zmienne
- procedury
- parametry procedur
- nazwy rekordów (typów rekordowych).
Identyfikator może składać się z liter (dużych i małych, które są rozróżniane), cyfr i znaku podkreślenia, przy czym pierwszym znakiem musi być litera lub znak podkreślenia. Przykłady poprawnych identyfikatorów: wiersz, I, _licznik10, Stan_5.
Nazwy pól
edytujNazwy pól służą do identyfikacji pól deklarowanych rekordów. Nazwy pól tworzone są na identycznych zasadach jak identyfikatory, lecz nazwy te nie kolidują z identyfikatorami i nazwami pól w innych rekordach o identycznej składni znakowej, gdyż odwołania do pól jako nazwy kwalifikowane jednoznacznie odróżniają pole danego rekordu od zmiennej czy od pola w innym rekordzie.
Słowa kluczowe
edytujSłowa kluczowe służą do identyfikacji pewnych wartości lub zmiennych udostępnianych przez Icon. Słowa kluczowe zawsze rozpoczynają się od znaku &, po którym następuje (oczywiście bez odstępu) słowo identyfikujące (pisane zawsze małymi literami.) wartość lub zmienną. Słowa kluczowe języka Icon:
Słowa zarezerwowane
edytujSłowa zarezerwowane, to takie słowa, które mają określone znaczenie w języku Icon i nie mogą być stosowane jako identyfikatory. Słowa te są pisane zawsze małymi literami. Słowa zarezerwowane:
ICON:
- dynamic
- external
ICON i WINICON:
- break
- by
- case
- create
- default
- do
- else
- end
- every
- fail
- global
- if
- initial
- local
- next
- not
- of
- procedure
- record
- repeat
- return
- static
- suspend
- then
- to
- until
- while
WINICON:
- link
Stałe (literały)
edytujStałe to inaczej - stosując nomenklaturę znaną z innych języków programowania – literały, posiadające określoną wartość i wynikający z zapisu literału typ tej wartości. Istnieją dwa zasadnicze typy literałów, które dzielą się na podtypy:
- numeryczne
- całkowite
- dziesiętne
- o określonej podstawie
- rzeczywiste
- w zapisie dziesiętnym stałopozycyjnym
- w zapisie wykładniczym
- całkowite
- znakowe
- zbiór znaków
- łańcuch znaków.
Stała całkowita dziesiętna to po prostu ciąg cyfr 0..9, interpretowanych jako wartość dziesiętna, np. 0, 20, 123445.
Stała całkowita o określonej podstawie umożliwia zapis wartości całkowitej w postaci liczby w systemie liczbowym o podstawie od 2 (binarny) do 32. Postać zapisu jest następująca:
podstawarliczba gdzie: podstawa to liczba całkowita dziesiętna z przedziału 0..32 liczba to zapis liczby całkowitej w systemie liczbowym o podstawie określonej przez podstawę, przy czym kolejne cyfry o wartości powyżej 9 oznaczane są przez kolejne litery od a do z, w zapisie liczb całkowitych z podstawą można stosować zarówno litery małe i duże, które oznaczają określone te same wartości, np. 12: 2r1100, 16rC, 32rc, 18: 2r10010, 16r11, 32rH,
Stała rzeczywista może zostać zapisana w postaci dziesiętnej stałopozycyjnej, tzn. w postaci:
liczba_całkowita_dziesiętna.liczba_całkowita_dziesiętna, lub liczba_całkowita_dziesiętna. (stała rzeczywista bez części ułamkowej), np. 12.456, 7., 7777.8888;
lub w postaci wykładniczej:
liczba1ewykładnik, gdzie liczba1 to liczba całkowita dziesiętna lub liczba rzeczywista w postaci dziesiętnej stałopozycyjnej, a wykładnik to liczba całkowita dziesiętna ewentualnie poprzedzona znakiem + lub -.
W zapisie tym można stosować małą literę e lub dużą literę E.
Stałe znakowe
edytujIstnieją dwa rodzaje stałych znakowych:
- zbiory znaków, listę znaków wchodzących w skład takiego zbioru ujmuje się w apostrofy, np. 'azbcddde', przy czym powtórzenie znaku ddd, oraz kolejność znaków, nie ma znaczenie i wartością takiego zbioru jest zbiór znaków 'abcdez',
- łańcuchy znaków, które składają się z uporządkowanego w pewien sposób ciągu znaków, w tym przypadku każdy, nawet powtórzony znak ma oczywiście znaczenie jak również kolejność znaków w łańcuchu, łańcuch zapisuje się ujmując ciąg znaków w znaki cudzysłowia, np. "wiersz", "To jest tekst.", w zapisie ciągu znaków można stosować pewne ustalone symbole poprzedzone kreską ukośną, oznaczające głównie znaki specjalne.
Stałe znakowe podaje się umieszczając w odpowiednich ogranicznikach
- znaki, lub
- specjalne symbole albo kody znaków w następującej postaci:
WINICON:
lp. | symbol | kod | znak | |||
---|---|---|---|---|---|---|
ctrl | dec | oct | hex | |||
1. | \b | ^H | 008 | 010 | 08 | backspace |
2. | \d | 127 | 177 | 7F | delete | |
3. | \e | ^[ | 027 | 033 | 1B | escape |
4. | \f | ^L | 012 | 014 | 0C | from feed |
5. | \l | line feed | ||||
6. | \n | ^J | 010 | 012 | 0A | new line |
7. | \r | ^M | 013 | 015 | 0D | carriage return |
8. | \t | ^I | 009 | 011 | 09 | horizontal tab |
9. | \v | ^K | 011 | 013 | 0B | vertical tab |
10. | \' | 044 | 054 | 2C | single quote | |
11. | \" | 034 | 042 | 22 | double quote | |
12. | \\ | 092 | 134 | 5C | backslash | |
13. | \ddd | ddd | ddd - octal code | |||
14. | \xdd | dd | dd - hexadecimal code | |||
15. | \^c | ^ | control code |
Separatory
edytujSeparatorem jest:
- średnik ;
- znak nowego wiersza (#10 UNIX, #13#10 DOS, WINDOWS).
Język nie wymaga stosowania średnika, z wyjątkiem sytuacji w której w jednym wierszu programu zapisanych jest kilka wyrażeń, np. a:=1; b:=10. Ponieważ znak nowego wiersza również jest separatorem, to dzielenie wyrażenia na kilka części musi być zapisane w taki sposób aby translator rozpoznał, że wyrażenie nie jest dokończone, np.
a:=1+ # operator + nie kończy wyrażenia, co rozpoznana translator 2 # zostanie zinterpretowane jako ciąg dalszy wyrażenia #a=3
a:=1 # wyrażenie przypisania +2 # nowe wyrażenie bez znaczenia # a=1
Operatory i symbole
edytujSymbole to zamknięta lista ciągów znakowych mających ustalone znaczenie w języku Icon. Gównie oznaczają one operatory, nawiasy lub inne elementy programu, przy czym (przeważnie) są to znaki inne niż litery. Lista symboli języka Icon:
Białe znaki
edytujBiałe znaki służą do rozdzielenia poszczególnych elementarnych składników kodu źródłowego (jednostek leksykalnych) i ewentualnie do formatowania tekstu w celu zwiększenia jego czytelności. Białymi znakami są:
- znak spacji i tabulacji,
- znak nowego wiersza (który może być także równocześnie separatorem),
- komentarz: komentarz rozpoczyna się do znaku # występującego na dowolnej pozycji wiersza kodu źródłowego, ale poza stałą znakową, a kończy się znakiem końca wiersza.