Icon/Kod źródłowy

Z Wikibooks, biblioteki wolnych podręczników.

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.

  1. identyfikatory
  2. nazwy pól
  3. słowa kluczowe
  4. słowa zarezerwowane
  5. stałe (literały)
    1. stałe numeryczne
    2. stałe znakowe
  6. separatory
  7. operatory i symbole
  8. 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[edytuj]

Identyfikatory 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[edytuj]

Nazwy 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[edytuj]

Sł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[edytuj]

Sł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)[edytuj]

Stał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
  • 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[edytuj]

Istnieją 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[edytuj]

Separatorem 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[edytuj]

Symbole 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[edytuj]

Biał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.