annotate docs/node.txt @ 2:ff5e493bc9cb default tip

2003-01-29
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 13 Oct 2012 21:14:50 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
1 Wewnętrzna truktura drzewa parsowania
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
2 =====================================
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
3
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
4
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
5 Węzły
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
6 -----
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
7
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
8 Możliwych jest kilka podejść. Najbardziej bezpośrednim byłoby
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
9 zdefiniowanie oddzielnej struktury danych dla każdej z produkcji gramatyki
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
10 i przypisywanie symbolom powstałym z takiej produkcji takiej właśnie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
11 struktury danych jako wartość. Nie trzeba chyba wyjaśniać, że takie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
12 podejście jest bardzo uciążliwe dla człowieka.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
13
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
14 Dlatego też wybrałem początkowo inne podejście -- struktury danych
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
15 tworzone są tylko dla niektórych symboli nieterminalnych, a mianowicie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
16 tych, które reprezentują pewne obiekty w sensie struktury programu, jak
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
17 typy, zmienne, procedury, funkcje, polecenia, wyrażenia i tym podobne.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
18 Nadal jednak każde z nich miało swoją oddzielną strukturę danych.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
19
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
20 Ostatecznie zrezygnowałem z takiego rozdziału. Podzieliłem zbiór
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
21 wszystkich rodzajów węzłów na podzbiory o podobnych własnościach i dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
22 każdego z tych podzbiorów zdefiniowałem strukturę danych. Dodatkowe pole
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
23 informuje o dokładnym rodzaju danego węzła.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
24
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
25 I tak otrzymałem 3 kategorie węzłow:
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
26
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
27 1) Symbole -- czyli wszelkie obiekty posiadające nazwę, takie jak: typy,
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
28 zmienne, stałe nazwane, pola rekordów, procedury, funkcje, unity, oraz sam
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
29 program. Nie wszystkie jednak symbole koniecznie muszą mieć jakąś nazwę --
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
30 dotyczy to głównie typów oraz niektórych zmiennych.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
31
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
32 2) Polecenia -- czyli pojedyńcze rozkazy programu, takie jak: blok,
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
33 instrukcja skoku, instrukcja warunkowa, pętle, przypisanie, instrukcja
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
34 wiążąca, instrukcja wyboru.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
35
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
36 3) Wyrażenia -- czyli wszystko to, co można do czegoś przypisać, co ma
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
37 jakąś wartość, na przykład: stałe, odwołania do zmiennych i stałych
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
38 nazwanych, wywołanie funkcji, operatory binarne, operatory unarne, etc.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
39
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
40 Pole mówiące o rodzaju węzła występuje zawsze jako pierwsze i jest zawsze
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
41 tego samego typu -- tak aby używając rzutowania na którąkolwiek z
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
42 kategorii węzłów wskaźnika void* można było poznać właściwą kategorię.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
43
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
44 Krawędzie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
45 ---------
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
46
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
47 Połączenia pomiędzy węzłami to po prostu wskaźniki umieszczone jako pola w
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
48 odpowiednich strukturach danych. Ich znaczenie zależy częściowo od
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
49 kategorii i rodzaju węzła, choć są także `uniwersalne', takie jak pola na
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
50 komentarze.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
51
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
52 Informacja o połączeniach w drugą stronę -- to znaczy informacja o przodku
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
53 danego węzła -- jest znacznie prostrza do przechowania i zależy tylko od
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
54 kaztegorii węzła.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
55
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
56 1) Symbole -- mogą być potomkami wyłącznie innych symboli. Wobec tego ich
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
57 pole `parent' jest wskaźnikiem na symbol.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
58
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
59 2) Polecenia -- mogą być potomkami inncyh poleceń (jak w instrukcji
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
60 warunkowej lub blokowej). Jedyny przypadek gdy tak nie jest dotyczy
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
61 instrukcji blokowej (BEGIN...END) i jest traktowany jako przypadek
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
62 szczególny. Jeśli pole parent takiej instrukcji jest równe NULL, to
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
63 rodzicem takiego węzła jest jakiś symbol, zapisany np. w polu symbol.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
64
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
65 3) Wyrażenia -- tutaj jest duży problem. Wyrażenia mogą wystąpić jako
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
66 części składowe większych wyrażeń, jako parametry poleceń, a także w
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
67 definicjach stałych nazwanych i typów.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
68 Ze względu na dość duży stopień komplikacji, jak i raczej niewielkie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
69 możliwości zastosowania, wyrażenia nie będą prawdopodobnie znały swoich
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
70 przodków.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
71
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
72
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
73 Symbole
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
74 -------
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
75
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
76 SymbolNode
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
77 kind Zmienna wyliczeniowa, opisuje dokładny rodzaj
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
78 węzła.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
79
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
80 name Nazwa danego symbolu (z zachowaniem pierwszy raz
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
81 napotkanej wielkości liter).
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
82
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
83 namespace Tablica symboli-dzieci (zarówno w postaci tablicy
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
84 hashującej jak i listy dla zachowania kolejności).
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
85 Ma wartość NULL dla symboli nie mogących mieć
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
86 dzieci (bezpłodne?). Symbole na liście mogą się
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
87 powtarzać. Wówczas pierwsze wystąpienie oznacza
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
88 tylko deklarację, a następne oznacza definicję.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
89
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
90 parent Wskaźnik na bezpośredniego przodka w drzewie. Ma
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
91 wartość NULL dla korzenia. Wskazuje w którym
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
92 miejscu symbol został zadeklarowany.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
93
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
94 body Wskaźnik na węzeł instrukcji blokowej stanowiącej
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
95 ciało danego programu, procedury lub funkcji.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
96 Także rozkaz przy którym znajduje się dana
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
97 etykieta. Ma wartość NULL dla pozostałych rodzajów
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
98 symboli.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
99
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
100 type Wskaźnik na symbol, w domyśle opisujący typ danego
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
101 węzła lub jego typ bazowy (dla innych typów). Dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
102 symboli nie mających typu ma wartość NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
103
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
104 used Lista wskaźników do węzłów w których używany jest
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
105 ten symbol. Dla programu jest to lista nazw
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
106 podanych po nazwie.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
107
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
108 Polecenia
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
109 ---------
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
110
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
111 StmtNode
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
112 kind Zmienna wyliczeniowa, opisuje dokładny rodzaj
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
113 węzła.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
114
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
115 parent Wskaźnik do instrukcji blokowej w której jest to
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
116 polecenie zawarte. Dla instrukcji blokowej będącej
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
117 ciałem programu, funkcji lub procedury -- ma
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
118 wartość NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
119
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
120 label Jeśli polecenie jest zaetykietowane jest to
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
121 wskaźnik do etykiety. W przeciwnym wypadku NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
122
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
123 list Dla instrukcji blokowej i pętli REPEAT -- lista
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
124 poleceń zawartych wewnątrz. Dla wywołania
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
125 procedury lista parametrów aktualnych. Dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
126 instrukcji wyboru -- lista wariantów CASE. Dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
127 instrukcji WITH -- lista zmiennych rekordowych.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
128 Dla pozostałych węzłów NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
129
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
130 stmt1 Dla pętli WHILE, instrukcji WITH i FOR oraz
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
131 wariantów CASE jest to wskaźnik do zawartego w
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
132 nich polecenia. Dla instrukcji warunkowej --
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
133 polecenia zaraz po THEN. Dla pozostałych węzłow
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
134 NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
135
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
136 stmt2 Dla instrukcji warunkowej -- polecenie po ELSE.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
137 Dla pozostałych węzłów NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
138
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
139 symbol Dla instrukcji blokowej -- symbol której jest ona
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
140 ciałem. Dla instrukcji przypisania -- zmienna do
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
141 której następuje przypisanie. Dla instrukcji skoku
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
142 -- etykieta do której nalezy wykonać skok. Dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
143 instrukcji FOR -- licznik pętli. Dla pozostałych
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
144 węzłów NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
145
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
146 expr1 Dla instrukcji przypisania -- wyrażenie które
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
147 należy przypisać. Dla pętli REPEAT i WHILE --
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
148 warunek końca (kontynuacji) pętli. Dla pętli FOR
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
149 -- wartość początkowa licznika. Dla instrukcji
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
150 wyboru i instrukcji warunkowej -- wyrażenie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
151 przełączające. Dla wariantów CASE -- wyrażenie
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
152 przy którym dany wariant ma zastosowanie. Dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
153 pozostałych NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
154
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
155 expr2 Dla pętli FOR -- wartość końcowa licznika. Dla
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
156 pozostałych wartości NULL.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
157
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
158 Wyrażenia
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
159 ---------
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
160
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
161 ExprNode
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
162 kind Zmienna wyliczeniowa, opisuje dokładny rodzaj
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
163 węzła.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
164
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
165 list Dla wywołania funkcji -- lista parametrów
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
166 formalnych.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
167
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
168 expr1 Dla operatorów binarnych i unarnych -- wartość na
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
169 jakiej działają.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
170
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
171 expr2 Dla operatorów binarnych -- druga wartość na
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
172 jakiej działa.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
173
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
174 symbol Dla wywołań zmiennych i funkcji -- dana zmienna
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
175 lub funkcja. Dla operatora @ -- symbol którego
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
176 adres zwraca.
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
177
ff5e493bc9cb 2003-01-29
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
178 value Dla stałych -- właściwa wartość danej stałej.