~ubuntu-branches/ubuntu/raring/kde-l10n-et/raring-proposed

« back to all changes in this revision

Viewing changes to docs/kdesdk/kate/highlighting.docbook

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2012-01-24 20:43:54 UTC
  • mfrom: (1.12.11)
  • Revision ID: package-import@ubuntu.com-20120124204354-sn1aih0cv15fjhp2
Tags: 4:4.8.0-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<appendix id="highlight">
 
2
<appendixinfo>
 
3
<authorgroup>
 
4
<author
 
5
><personname
 
6
><firstname
 
7
></firstname
 
8
></personname
 
9
></author>
 
10
<othercredit role="translator"
 
11
><firstname
 
12
>Marek</firstname
 
13
><surname
 
14
>Laane</surname
 
15
><affiliation
 
16
><address
 
17
><email
 
18
>bald@smail.ee</email
 
19
></address
 
20
></affiliation
 
21
><contrib
 
22
>Tõlge eesti keelde</contrib
 
23
></othercredit
 
24
 
25
</authorgroup>
 
26
</appendixinfo>
 
27
<title
 
28
>Süntaksi esiletõstmise kasutamine</title>
 
29
 
 
30
<sect1 id="highlight-overview">
 
31
 
 
32
<title
 
33
>Ülevaade</title>
 
34
 
 
35
<para
 
36
>Süntaksi esiletõstmine paneb redaktori automaatselt näitama teksti erinevates stiilides ja värvides vastavalt stringi funktsioonile failis. Rakenduse lähtetekstis võivad koodi juhtlaused olla näiteks rasvases kirjas, andmetüübid ja kommentaarid aga ülejäänud tekstist erinevat värvi. See hõlbustab märgatavalt teksti redigeerimist ning aitab autoril tõhusamalt ja tootlikumalt töötada.</para>
 
37
 
 
38
<mediaobject>
 
39
<imageobject
 
40
><imagedata format="PNG" fileref="highlighted.png"/></imageobject>
 
41
<textobject
 
42
><phrase
 
43
>Perli funktsioon, esitatud süntaksi esiletõstu kasutades.</phrase
 
44
></textobject>
 
45
<caption
 
46
><para
 
47
>Perli funktsioon, esitatud süntaksi esiletõstu kasutades.</para>
 
48
</caption>
 
49
</mediaobject>
 
50
 
 
51
<mediaobject>
 
52
<imageobject
 
53
><imagedata format="PNG" fileref="unhighlighted.png"/></imageobject>
 
54
<textobject
 
55
><phrase
 
56
>Sama perli funktsioon ilma esiletõstuta.</phrase
 
57
></textobject>
 
58
<caption
 
59
><para
 
60
>Sama perli funktsioon ilma esiletõstuta.</para
 
61
></caption>
 
62
</mediaobject>
 
63
 
 
64
<para
 
65
>Kumba kahest näitest on hõlpsam lugeda?</para>
 
66
 
 
67
<para
 
68
>&kate; kasutab paindlikku, seadistatavat ja võimsat süntaksi esiletõstmise süsteemi ning ka tavalise distributsiooniga käib kaasas väga ulatuslik programmeerimis-, märke- ja skriptikeelte ning muude tekstifaili vormingute definitsioonide komplekt. Lisaks võid luua omaenda definitsioonid tavaliste &XML;-failide kujul.</para>
 
69
 
 
70
<para
 
71
>&kate; tuvastab faili avamisel selle &MIME; tüübile tuginedes (mille määrab kindlaks faililaiend või kui seda ei ole, siis sisu) automaatselt sobiva süntaksi ja selle reeglid. Kui sinu arvates on valik valesti langetatud, võid kasutatava süntaksi määrata käsitsi menüüst <menuchoice
 
72
><guimenu
 
73
>Tööriistad</guimenu
 
74
><guisubmenu
 
75
>Esiletõstmine</guisubmenu
 
76
></menuchoice
 
77
>.</para>
 
78
 
 
79
<para
 
80
>Iga süntaksi esiletõstu määratluse stiilid ja värvid saab ise seada <link linkend="config-dialog"
 
81
>seadistustedialoogi</link
 
82
> leheküljel <link linkend="prefcolors-highlighting-text-styles"
 
83
>Tekstistiilide esiletõstmine</link
 
84
>, &MIME; tüübid aga, mille puhul esiletõstu kasutada, leheküljel <link linkend="pref-open-save-modes-filetypes"
 
85
>Režiimid ja failitüübid</link
 
86
>.</para>
 
87
 
 
88
<note>
 
89
<para
 
90
>Süntaksi esiletõstmine on mõeldud parandama korrektse teksti lugemist, kuid seda ei peaks kasutama teksti korrektsuse kontrollimiseks. Teksti süntaksi märkimine on sõltuvalt kasutatavast vormingust päris keeruline ettevõtmine ja mõnel juhul on süntaksireeglite autorid väga uhked, kui suudavad korrektselt esitada 98% tekstist, kuigi enamasti läheb sul vaja mõnda päris haruldast stiili, et näha mittekorrektset 2%.</para>
 
91
</note>
 
92
 
 
93
<tip>
 
94
<para
 
95
>Uusi või uuendatud süntaksi esiletõstu definitsioone saab alla laadida &kate; veebileheküljelt klõpsuga nupule <guibutton
 
96
>Laadi esiletõstu failid alla...</guibutton
 
97
> <link linkend="config-dialog"
 
98
>seadistustedialoogi</link
 
99
> leheküljel <link linkend="pref-open-save-modes-filetypes"
 
100
>Režiimid ja failitüübid</link
 
101
>.</para>
 
102
</tip>
 
103
 
 
104
</sect1>
 
105
 
 
106
<sect1 id="katehighlight-system">
 
107
 
 
108
<title
 
109
>&kate; süntaksi esiletõstmise süsteem</title>
 
110
 
 
111
<para
 
112
>See sektsioon tutvustab põhjalikumalt &kate; süntaksi esiletõstmise mehhanismi. See on mõeldud neile, kes soovivad sellest rohkem teada saada või tahavad süntaksi definitsioone muuta või uusi luua.</para>
 
113
 
 
114
<sect2 id="katehighlight-howitworks">
 
115
 
 
116
<title
 
117
>Kuidas see töötab</title>
 
118
 
 
119
<para
 
120
>Kui sa faili avad, püüab &kate; redaktor kõigepealt tuvastada, millist süntaksi definitsooni antud faili puhul kasutada. Faili teksti lugedes, samuti ajal, mil sa seda redigeerid, analüüsib süntaksi esiletõstu süsteem teksti, kasutades selleks süntaksi definitsioonis antud määratlusi, ning märgistab erinevad kontekstid ja stiilid vastavalt reeglitele.</para>
 
121
 
 
122
<para
 
123
>Dokumenti uue teksti kirjutamise ajal analüüsitakse ja märgistatakse see käigult, nii et kui kustutad märgi, mis tähistas mingi konteksti algust või lõppu, siis muutub vastavalt ka ümbritseva teksti stiil.</para>
 
124
 
 
125
<para
 
126
>Süntaksi definitsioonid, mida &kate; kasutab esiletõstu süsteemis, on &XML;-failid, mis sisaldavad endas <itemizedlist>
 
127
<listitem
 
128
><para
 
129
>reegleid kontekstiblokkideks organiseeritud teksti rolli määramiseks</para
 
130
></listitem>
 
131
<listitem
 
132
><para
 
133
>märksõnade nimekirju</para
 
134
></listitem>
 
135
<listitem
 
136
><para
 
137
>stiilielementide definitsioone</para
 
138
></listitem>
 
139
</itemizedlist>
 
140
</para>
 
141
 
 
142
<para
 
143
>Teksti analüüsides hinnatakse tuvastusreegleid vastavalt nende defineerimise järjekorrale ja kui mingi stringi algus vastab reeglile, siis kasutatakse vastavat konteksti. Alguspunktist liigutakse punkti, kus reegli kohaselt kontekst lõpeb, ning sealt algab reegli uus osa, mis võib olla erinevalt märgistatud.</para>
 
144
 
 
145
</sect2>
 
146
 
 
147
<sect2 id="highlight-system-rules">
 
148
<title
 
149
>Reeglid</title>
 
150
 
 
151
<para
 
152
>Tuvastusreeglid on esiletõstu tuvastamise tuum. Reegel on string, märk või <link linkend="regular-expressions"
 
153
>regulaaravaldis</link
 
154
>, millega sobivuse osas teksti analüüsitaksegi. Selles sisaldub info, millist stiili kasutada sobiva tekstiosa puhul. Reegel võib lülitada süsteemi töökonteksti kas otseselt mainitud kontekstile või varem tekstis kasutatud kontekstile.</para>
 
155
 
 
156
<para
 
157
>Reeglid on rühmitatud kontekstigruppidesse. Kontekstigruppi kasutatakse vormingu peamiste tekstiosiste jaoks, milleks võivad näiteks olla jutumärkides tekstistringid või kommenteeritud tekstiblokid. See tagab, et esiletõstu süsteem ei pea läbi lappama kõiki reegleid, kui seda ei ole vaja, ja et mõningaid järjestikusi märke tekstis võib tõlgendada erinevalt sõltuvalt hetkekontekstist. </para>
 
158
 
 
159
<para
 
160
>Konteksti saab genereerida dünaamiliselt, mis lubab reeglites kasutada protsessipõhiseid andmeid.</para>
 
161
 
 
162
</sect2>
 
163
 
 
164
<sect2 id="highlight-context-styles-keywords">
 
165
<title
 
166
>Kontekstistiilid ja võtmesõnad</title>
 
167
 
 
168
<para
 
169
>Mõnes programmeerimiskeeles tõlgendab kompilaator (rakendus, mis teisendab lähtekoodi binaarkoodiks) täisarve teisiti kui ujukomaarve ning mõnikord võib esineda ka märke, mis omandavad eritähenduse, kui nad asuvad jutumärkide vahel. Sellisel juhul on mõttekas käsitleda neid ümbritsevast erinevalt, nii et neid saaks teksti lugedes hõlpsasti eristada. Seepärast võib süntaksi esiletõstmise süsteem käsitleda neid erikontekstina ja vastavalt ka märkida, isegi kui nad seda tegelikult ei ole.</para>
 
170
 
 
171
<para
 
172
>Süntaksi definitsioon võib sisaldada nii palju stiile, kui vähegi on vaja katmaks vorminguelemente, mille tuvastamiseks ta mõeldud on.</para>
 
173
 
 
174
<para
 
175
>Mitme vormingu puhul esinevad sõnade nimekirjad, mis esindavad erikontseptsiooni. Näiteks programmeerimiskeeltes on juhtlaused, andmetüübid ja keele sisseehitatud funktsioonid erinevad kontseptsioonid. &kate; süntaksi esiletõstu süsteem kasutab selliseid nimekirju tuvastamaks ja märkimaks tekstis sõnu, mis vastavad tekstivormingu kontseptsioonidele.</para>
 
176
 
 
177
</sect2>
 
178
 
 
179
<sect2 id="kate-highlight-system-default-styles">
 
180
<title
 
181
>Vaikestiilid</title>
 
182
 
 
183
<para
 
184
>Kui avad &kate;s C++ lähtetekstifaili, &Java; lähtetekstifaili ja <acronym
 
185
>HTML</acronym
 
186
>-dokumendi, märkad, et kuigi vormingud on erinevad ja seepärast on erikohtlemise osaks saanud erinevad sõnad, on kasutatavad värvid ühesugused. Selle põhjuseks on asjaolu, et &kate; kasutab eelnevalt määratud vaikestiilide nimekirja, mida siis omakorda kasutavad konkreetsed süntaksi määratlused.</para>
 
187
 
 
188
<para
 
189
>See võimaldab hõlpsasti tuvastada ühesuguseid kontseptsioone erinevate tekstivormingute puhul. Nii esinevad näiteks kommentaarid peaaegu igas programmeerimis-, skripti- või märkekeeles ja kui nende märkimiseks kasutatakse igas keeles ühesugust värvi, siis ei pea uut faili avades nägema vaeva nende leidmisega.</para>
 
190
 
 
191
<tip>
 
192
<para
 
193
>Kõik stiilid süntaksi definitsioonis kasutavad üht vaikestiili. Mõned süntaksi definitsioonid võivad kasutada rohkem stiile, kui neid on vaikimisi määratud, nii et kui kasutad tihti sellist vormingut, võiks olla nutikas tegu avada seadistustedialoog ja järele vaadata, kas mõningad kontseptsioonid kasutavad üht ja sama stiili. Näiteks on ainult üks vaikestiil stringide jaoks, kuid programmeerimiskeel Perl kasutab kaht tüüpi stringe, mistõttu esiletõstu saab parandada neile veidi erinevaid omadusi andes. Kõiki <link linkend="kate-highlight-default-styles"
 
194
>saadaolevaid vaikestiile</link
 
195
> selgitame veidi hiljem.</para>
 
196
</tip>
 
197
 
 
198
</sect2>
 
199
 
 
200
</sect1>
 
201
 
 
202
<sect1 id="katehighlight-xml-format">
 
203
<title
 
204
>Esiletõstu definitsiooni &XML;-vorming</title>
 
205
 
 
206
<sect2>
 
207
<title
 
208
>Ülevaade</title>
 
209
 
 
210
<para
 
211
>See sektsioon annab ülevaate esiletõstu definitsiooni &XML;-vormingust, kirjeldades põhikomponente, nende tähendust ja kasutamist. Järgmises sektsioonis süüvitakse tuvastusreeglite olemusse.</para>
 
212
 
 
213
<para
 
214
>Formaalne määratlus ehk <acronym
 
215
>DTD</acronym
 
216
> on salvestatud faili <filename
 
217
>language.dtd</filename
 
218
>, mis peaks olema paigaldatud kataloogi <filename
 
219
>$<envar
 
220
>KDEDIR</envar
 
221
>/share/apps/katepart/syntax</filename
 
222
>. </para>
 
223
 
 
224
<variablelist>
 
225
<title
 
226
>&kate; esiletõstu definitsiooni failide põhisektsioonid</title>
 
227
 
 
228
<varlistentry>
 
229
<term
 
230
>Esiletõstu fail sisaldab päist, mis määrab ära XML-i versiooni ja doctype'i:</term>
 
231
<listitem>
 
232
<programlisting
 
233
>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 
234
&lt;!DOCTYPE language SYSTEM &quot;language.dtd&quot;&gt;
 
235
</programlisting>
 
236
</listitem>
 
237
</varlistentry>
 
238
 
 
239
<varlistentry>
 
240
<term
 
241
>Definitsioonifaili juureks on element <userinput
 
242
>language</userinput
 
243
>. Võimalikud atribuudid on järgmised:</term>
 
244
 
 
245
<listitem>
 
246
<para
 
247
>Nõutavad atribuudid:</para>
 
248
<para
 
249
><userinput
 
250
>name</userinput
 
251
> määrab keele nime. Seda näeb ka menüüdes ja dialoogides.</para>
 
252
<para
 
253
><userinput
 
254
>section</userinput
 
255
> määrab kategooria.</para>
 
256
<para
 
257
><userinput
 
258
>extensions</userinput
 
259
> määrab faililaiendid, näiteks &quot;*.cpp;*.h&quot;</para>
 
260
 
 
261
<para
 
262
>Lisaatribuudid:</para>
 
263
<para
 
264
><userinput
 
265
>mimetype</userinput
 
266
> seostab failid &MIME; tüübiga.</para>
 
267
<para
 
268
><userinput
 
269
>version</userinput
 
270
> määrab definitsioonifaili versiooni.</para>
 
271
<para
 
272
><userinput
 
273
>kateversion</userinput
 
274
> määrab viimase toetatud &kate; versiooni.</para>
 
275
<para
 
276
><userinput
 
277
>casesensitive</userinput
 
278
> määrab, kas võtmesõnad on tõstutundlikud või mitte.</para>
 
279
<para
 
280
><userinput
 
281
>priority</userinput
 
282
> on vajalik juhul, kui samu laiendeid kasutab mõni muu esiletõstu definitsiooni fail. Sel juhul saab eelistuse kõrgem prioriteet.</para>
 
283
<para
 
284
><userinput
 
285
>author</userinput
 
286
> sisaldab autori nime ja tema e-posti aadressi.</para>
 
287
<para
 
288
><userinput
 
289
>license</userinput
 
290
> sisaldab litsentsi (tavaliselt LGPL, Artistic, GPL vms.).</para>
 
291
<para
 
292
><userinput
 
293
>hidden</userinput
 
294
> määrab, kas nimi esineb &kate; menüüs või mitte.</para>
 
295
<para
 
296
>Niisiis võib järgmine rida näha välja selline:</para>
 
297
<programlisting
 
298
>&lt;language name=&quot;C++&quot; version=&quot;1.00&quot; kateversion=&quot;2.4&quot; section=&quot;Sources&quot; extensions=&quot;*.cpp;*.h&quot; /&gt;
 
299
</programlisting>
 
300
</listitem>
 
301
</varlistentry>
 
302
 
 
303
 
 
304
<varlistentry>
 
305
<term
 
306
>Seejärel tuleb element <userinput
 
307
>highlighting</userinput
 
308
>, mis võib sisaldada endas elementi <userinput
 
309
>list</userinput
 
310
> ja kus peavad leiduma elemendid <userinput
 
311
>contexts</userinput
 
312
> ja <userinput
 
313
>itemDatas</userinput
 
314
>.</term>
 
315
<listitem>
 
316
<para
 
317
>Element <userinput
 
318
>list</userinput
 
319
> sisaldab võtmesõnade nimekirja. Antud juhul on võtmesõnadeks <emphasis
 
320
>class</emphasis
 
321
> ja <emphasis
 
322
>const</emphasis
 
323
>. Nimekirju võib lisada nii palju, kui neid parajasti vaja läheb.</para>
 
324
<para
 
325
>Element <userinput
 
326
>contexts</userinput
 
327
> sisaldab kõiki kontekste. Esimene kontekst on vaikimisi esiletõstu alguses. Kontekstis <emphasis
 
328
>Tavaline tekst</emphasis
 
329
> on kaks reeglit, millest üks sobitab võtmesõnade nimekirja nimega <emphasis
 
330
>minginimi</emphasis
 
331
> ja teine tuvastab jutumärgid ning lülitub kontekstile <emphasis
 
332
>string</emphasis
 
333
>. Reeglitest räägib lähemalt järgmine peatükk.</para>
 
334
<para
 
335
>Kolmas osa on element <userinput
 
336
>itemDatas</userinput
 
337
>. See sisaldab kõiki värvi- ja fondistiile, mida kontekstid ja reeglid vajavad. Antud näites on kasutusel <userinput
 
338
>itemData</userinput
 
339
> <emphasis
 
340
>Tavaline tekst</emphasis
 
341
>, <emphasis
 
342
>String</emphasis
 
343
> ja <emphasis
 
344
>Võtmesõna</emphasis
 
345
>. </para>
 
346
<programlisting
 
347
>&lt;highlighting&gt;
 
348
    &lt;list name=&quot;minginimi&quot;&gt;
 
349
      &lt;item&gt; class &lt;/item&gt;
 
350
      &lt;item&gt; const &lt;/item&gt;
 
351
    &lt;/list&gt;
 
352
    &lt;contexts&gt;
 
353
      &lt;context attribute=&quot;Tavaline tekst&quot; lineEndContext=&quot;#pop&quot; name=&quot;Tavaline tekst&quot; &gt;
 
354
        &lt;keyword attribute=&quot;Võtmesõna&quot; context=&quot;#stay&quot; String=&quot;minginimi&quot; /&gt;
 
355
        &lt;DetectChar attribute=&quot;String&quot; context=&quot;string&quot; char=&quot;&amp;quot;&quot; /&gt;
 
356
      &lt;/context&gt;
 
357
      &lt;context attribute=&quot;String&quot; lineEndContext=&quot;#stay&quot; name=&quot;string&quot; &gt;
 
358
        &lt;DetectChar attribute=&quot;String&quot; context=&quot;#pop&quot; char=&quot;&amp;quot;&quot; /&gt;
 
359
      &lt;/context&gt;
 
360
    &lt;/contexts&gt;
 
361
    &lt;itemDatas&gt;
 
362
      &lt;itemData name=&quot;Tavaline tekst&quot; defStyleNum=&quot;dsNormal&quot; /&gt;
 
363
      &lt;itemData name=&quot;Võtmesõna&quot; defStyleNum=&quot;dsVõtmesõna&quot; /&gt;
 
364
      &lt;itemData name=&quot;String&quot; defStyleNum=&quot;dsString&quot; /&gt;
 
365
    &lt;/itemDatas&gt;
 
366
  &lt;/highlighting&gt;
 
367
</programlisting>
 
368
</listitem>
 
369
</varlistentry>
 
370
 
 
371
<varlistentry>
 
372
<term
 
373
>Esiletõstu definitsiooni viimane osa on mittekohustuslik sektsioon <userinput
 
374
>general</userinput
 
375
>. See võib sisaldada infot võtmesõnade, koodi voltimise, kommentaaride ja treppimise kohta.</term>
 
376
 
 
377
<listitem>
 
378
<para
 
379
>Sektsioon <userinput
 
380
>comment</userinput
 
381
> määrab, millise stringiga algab üherealine kommentaar. Määrata võib ka mitmerealise kommentaari, kasutades atribuuti <emphasis
 
382
>multiLine</emphasis
 
383
> koos lisaatribuudiga <emphasis
 
384
>end</emphasis
 
385
>. Seda kasutatakse siis, kui kasutaja tarvitab <emphasis
 
386
>kommentaari lisamise/eemaldamise</emphasis
 
387
> kiirklahvi.</para>
 
388
<para
 
389
>Sektsioon <userinput
 
390
>keywords</userinput
 
391
> määrab, kas võtmesõnade nimekirjad on tõstutundlikud või mitte. Teisi atribuute selgitame hiljem.</para>
 
392
<programlisting
 
393
>&lt;general&gt;
 
394
    &lt;comments&gt;
 
395
      &lt;comment name="singleLine" start="#"/&gt;
 
396
    &lt;/comments&gt;
 
397
    &lt;keywords casesensitive="1"/&gt;
 
398
  &lt;/general&gt;
 
399
&lt;/language&gt;
 
400
</programlisting>
 
401
</listitem>
 
402
</varlistentry>
 
403
 
 
404
</variablelist>
 
405
 
 
406
 
 
407
</sect2>
 
408
 
 
409
<sect2 id="kate-highlight-sections">
 
410
<title
 
411
>Sektsioonid üksikasjalikult</title>
 
412
<para
 
413
>Selles osas kirjeldame kõiki saadaolevaid konteksti, 'itemData', võtmesõnade, kommentaaride, koodi voltimise ja treppimise atribuute.</para>
 
414
 
 
415
<variablelist>
 
416
<varlistentry>
 
417
<term
 
418
>Element <userinput
 
419
>context</userinput
 
420
> kuulub gruppi <userinput
 
421
>contexts</userinput
 
422
>. Kontekst määrab kontekstispetsiifilised reeglid, näiteks selle, mis juhtub siis, kui esiletõstu süsteem jõuab oma tegevuses rea lõppu. Võimalikud atribuudid on järgmised:</term>
 
423
 
 
424
 
 
425
<listitem>
 
426
<para
 
427
><userinput
 
428
>name</userinput
 
429
> määrab konteksti nime. Reeglid kasutavad seda määramaks konteksti, millele lülituda, kui reegel sobib.</para>
 
430
<para
 
431
><userinput
 
432
>lineEndContext</userinput
 
433
> määrab konteksti, millele esiletõstu süsteem lülitub rea lõppu jõudes. See võib olla mõne teise konteksti nimi, <userinput
 
434
>#stay</userinput
 
435
>, mis keelab konteksti vahetamise, või <userinput
 
436
>#pop</userinput
 
437
>, mis sunnib kontekstist loobuma. Võimalik on ka kasutada näiteks <userinput
 
438
>#pop#pop#pop</userinput
 
439
>, et kolm korda järjest kontekstist loobuda.</para>
 
440
<para
 
441
><userinput
 
442
>lineBeginContext</userinput
 
443
> määrab konteksti, kui ette tuleb reaalgus. Vaikimisi #stay.</para>
 
444
<para
 
445
><userinput
 
446
>fallthrough</userinput
 
447
> määrab, kas lülituda kontekstile, mille määrab fallthroughContext, kui ühtegi sobivat reeglit ei leita, või mitte. Vaikimisi väär (<emphasis
 
448
>false</emphasis
 
449
>).</para>
 
450
<para
 
451
><userinput
 
452
>fallthroughContext</userinput
 
453
> määrab järgmise konteksti, kui ei leita ühtegi sobivat reeglit.</para>
 
454
<para
 
455
><userinput
 
456
>dynamic</userinput
 
457
>: kui on tõene (<emphasis
 
458
>true</emphasis
 
459
>), jätab kontekst meelde dünaamiliste reeglite salvestatud stringid/kohatäitjad. Seda on vaja näiteks HERE-dokumentide jaoks. Vaikimisi väär (<emphasis
 
460
>false</emphasis
 
461
>).</para>
 
462
</listitem>
 
463
</varlistentry>
 
464
 
 
465
 
 
466
<varlistentry>
 
467
<term
 
468
>Element <userinput
 
469
>itemData</userinput
 
470
> kuulub gruppi <userinput
 
471
>itemDatas</userinput
 
472
>. See määrab fondistiili ja värvid. Nii saab määrata ka omaenda stiilid ja värvid, kuid soovitatav oleks võimaluse korral siiski kasutada vaikestiile, et kasutaja näeks alati ka erinevates keeltes ühesuguseid värve. Vahel on siiski mõttekas ja vajalik värvide ja fontide atribuute muuta. Nõutav on atribuudi nimi ja defStyleNum, ülejäänud pole kohustuslikud. Võimalikud atribuudid on järgmised:</term>
 
473
 
 
474
<listitem>
 
475
<para
 
476
><userinput
 
477
>name</userinput
 
478
> määrab itemData nime. Kontekstid ja reeglid kasutavad seda nime oma atribuudis <emphasis
 
479
>atribuut</emphasis
 
480
> itemData'le viidates.</para>
 
481
<para
 
482
><userinput
 
483
>defStyleNum</userinput
 
484
> määrab kasutatava vaikestiili. Saadaolevaid vaikestiile tutvustame edaspidi.</para>
 
485
<para
 
486
><userinput
 
487
>color</userinput
 
488
> määrab värvi. Sobiv vorming on '#rrggbb' või '#rgb'.</para>
 
489
<para
 
490
><userinput
 
491
>selColor</userinput
 
492
> määrab valiku värvi.</para>
 
493
<para
 
494
><userinput
 
495
>italic</userinput
 
496
>: kui on tõene (<emphasis
 
497
>true</emphasis
 
498
>), on tekst kaldkirjas.</para>
 
499
<para
 
500
><userinput
 
501
>bold</userinput
 
502
>: kui on tõene (<emphasis
 
503
>true</emphasis
 
504
>), on tekst rasvases kirjas.</para>
 
505
<para
 
506
><userinput
 
507
>underline</userinput
 
508
>: kui on tõene (<emphasis
 
509
>true</emphasis
 
510
>), on tekst allajoonitud.</para>
 
511
<para
 
512
><userinput
 
513
>strikeout</userinput
 
514
>: kui on tõene (<emphasis
 
515
>true</emphasis
 
516
>), on tekst läbikriipsutatud.</para>
 
517
<para
 
518
><userinput
 
519
>spellChecking</userinput
 
520
>: kui on tõene (<emphasis
 
521
>true</emphasis
 
522
>), kontrollitakse teksti õigekirja, vastasel juhul jäetakse see õigekirja kontrollimisel kõrvale.</para>
 
523
</listitem>
 
524
</varlistentry>
 
525
 
 
526
 
 
527
<varlistentry>
 
528
<term
 
529
>Element <userinput
 
530
>keywords</userinput
 
531
> grupis <userinput
 
532
>general</userinput
 
533
> määrab võtmesõna omadused. Võimalikud atribuudid on järgmised:</term>
 
534
 
 
535
<listitem>
 
536
<para
 
537
><userinput
 
538
>casesensitive</userinput
 
539
> võib olla tõene (<emphasis
 
540
>true</emphasis
 
541
>) või väär (<emphasis
 
542
>false</emphasis
 
543
>). Kui see on tõene, on kõik võtmesõnad tõstutundlikud.</para>
 
544
<para
 
545
><userinput
 
546
>weakDeliminator</userinput
 
547
> on märkide nimekiri, mida ei kasutata sõnaeraldajana. Näiteks punkt <userinput
 
548
>'.'</userinput
 
549
> on sõnaeraldaja. Eeldusel, et võtmesõna atribuudis <userinput
 
550
>list</userinput
 
551
> sisaldab punkti, leitakse sobivus ainult siis, kui määrad punkti nõrgaks eraldajaks.</para>
 
552
<para
 
553
><userinput
 
554
>additionalDeliminator</userinput
 
555
> määrab lisaeraldajad.</para>
 
556
<para
 
557
><userinput
 
558
>wordWrapDeliminator</userinput
 
559
> määrab märgid, mille järel võib rida murda.</para>
 
560
<para
 
561
>Vaikimisi on eraldajateks ja sõnamurdmise eraldajateks märgid <userinput
 
562
>.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\</userinput
 
563
>, tühikumärk (<userinput
 
564
>' '</userinput
 
565
>) ja tabeldusmärk (<userinput
 
566
>'\t'</userinput
 
567
>).</para>
 
568
</listitem>
 
569
</varlistentry>
 
570
 
 
571
 
 
572
<varlistentry>
 
573
<term
 
574
>Element <userinput
 
575
>comment</userinput
 
576
> grupis <userinput
 
577
>comments</userinput
 
578
> määrab kommentaari omadused, mida kasutatakse menüükäskude <menuchoice
 
579
><guimenu
 
580
>Tööriistad</guimenu
 
581
><guimenuitem
 
582
>Kommentaar</guimenuitem
 
583
></menuchoice
 
584
> ja <menuchoice
 
585
><guimenu
 
586
>Tööriistad</guimenu
 
587
><guimenuitem
 
588
>Kommentaari eemaldamine</guimenuitem
 
589
></menuchoice
 
590
> jaoks. Võimalikud atribuudid on järgmised:</term>
 
591
 
 
592
<listitem>
 
593
<para
 
594
><userinput
 
595
>name</userinput
 
596
> on kas <emphasis
 
597
>singleLine</emphasis
 
598
> või <emphasis
 
599
>multiLine</emphasis
 
600
>. Kui valida <emphasis
 
601
>multiLine</emphasis
 
602
>, on vajalikud ka atribuudid <emphasis
 
603
>end</emphasis
 
604
> ja <emphasis
 
605
>region</emphasis
 
606
>.</para>
 
607
<para
 
608
><userinput
 
609
>start</userinput
 
610
> määrab stringi, millega alustatakse kommentaari. C++ korral on see näiteks &quot;/*&quot;.</para>
 
611
<para
 
612
><userinput
 
613
>end</userinput
 
614
> määrab stringi, millega lõpetatakse kommentaar. C++ korral on see näiteks &quot;*/&quot;.</para>
 
615
<para
 
616
><userinput
 
617
>region</userinput
 
618
> on mitmerealise kokkuvolditava kommentaari nimi. Eeldusel, et su reeglites on <emphasis
 
619
>beginRegion="Comment"</emphasis
 
620
> ... <emphasis
 
621
>endRegion="Comment"</emphasis
 
622
>, tuleb kasutada <emphasis
 
623
>region="Comment"</emphasis
 
624
>. Sel juhul toimib kommentaari eemaldamine ka siis, kui sa ei vali kogu mitmerealise kommentaari teksti - lihtsalt kursor peab asuma mitmerealise kommentaari sees.</para>
 
625
</listitem>
 
626
</varlistentry>
 
627
 
 
628
 
 
629
<varlistentry>
 
630
<term
 
631
>Element <userinput
 
632
>folding</userinput
 
633
> grupis <userinput
 
634
>general</userinput
 
635
> määrab koodivoltimise omadused. Võimalikud atribuudid on järgmised:</term>
 
636
 
 
637
<listitem>
 
638
<para
 
639
><userinput
 
640
>indentationsensitive</userinput
 
641
>: kui see on tõene (<emphasis
 
642
>true</emphasis
 
643
>), lisatakse koodivoltimise markerid vastavalt treppimisele (näiteks skriptikeeles Python). Tavaliselt pole seda vaja ning vaikimisi ongi see väär (<emphasis
 
644
>false</emphasis
 
645
>).</para>
 
646
</listitem>
 
647
</varlistentry>
 
648
 
 
649
 
 
650
<varlistentry>
 
651
<term
 
652
>Element <userinput
 
653
>indentation</userinput
 
654
> grupis <userinput
 
655
>general</userinput
 
656
> määrab, millist treppimist kasutada. Soovitatav on siiski seda elementi vältida, sest treppimine määratakse tavaliselt kas failitüüpi defineerides või režiimirida tekstifailile lisades. Kui see siiski määrata, sunnitakse kasutajale peale konkreetne treppimine, mis aga ei pruugi alati kuigi hästi sobida. Võimalikud atribuudid on järgmised:</term>
 
657
 
 
658
<listitem>
 
659
<para
 
660
><userinput
 
661
>mode</userinput
 
662
> on treppimise nimi. Praegu on saada järgmised treppimised: <emphasis
 
663
>tavaline, cstyle, haskell, lilypond, lisp, python, ruby</emphasis
 
664
> ja <emphasis
 
665
>xml</emphasis
 
666
>.</para>
 
667
</listitem>
 
668
</varlistentry>
 
669
 
 
670
 
 
671
</variablelist>
 
672
 
 
673
 
 
674
</sect2>
 
675
 
 
676
<sect2 id="kate-highlight-default-styles">
 
677
<title
 
678
>Saadaolevad vaikestiilid</title>
 
679
<para
 
680
>Vaikestiile me lühidalt <link linkend="kate-highlight-system-default-styles"
 
681
>juba tutvustasime</link
 
682
>: need on eelnevalt määratud fondi- ja värvistiilid.</para>
 
683
<variablelist>
 
684
<varlistentry>
 
685
<term
 
686
>Seepärast loetleme siin lihtsalt saadaolevad vaikestiilid:</term>
 
687
<listitem>
 
688
<para
 
689
><userinput
 
690
>dsNormal</userinput
 
691
> tavalise teksti jaoks.</para>
 
692
<para
 
693
><userinput
 
694
>dsKeyword</userinput
 
695
> võtmesõnade jaoks.</para>
 
696
<para
 
697
><userinput
 
698
>dsDataType</userinput
 
699
> andmetüüpide jaoks.</para>
 
700
<para
 
701
><userinput
 
702
>dsDecVal</userinput
 
703
> murdarvväärtuste jaoks.</para>
 
704
<para
 
705
><userinput
 
706
>dsBaseN</userinput
 
707
> väärtuste jaoks, mille aluseks ei ole 10.</para>
 
708
<para
 
709
><userinput
 
710
>dsFloat</userinput
 
711
> ujukomaväärtuste jaoks.</para>
 
712
<para
 
713
><userinput
 
714
>dsChar</userinput
 
715
> märkide jaoks.</para>
 
716
<para
 
717
><userinput
 
718
>dsString</userinput
 
719
> stringide jaoks.</para>
 
720
<para
 
721
><userinput
 
722
>dsComment</userinput
 
723
> kommentaaride jaoks.</para>
 
724
<para
 
725
><userinput
 
726
>dsOthers</userinput
 
727
> 'muude asjade' jaoks.</para>
 
728
<para
 
729
><userinput
 
730
>dsAlert</userinput
 
731
> hoiatuste jaoks.</para>
 
732
<para
 
733
><userinput
 
734
>dsFunction</userinput
 
735
> funktsiooni väljakutsete jaoks.</para>
 
736
<para
 
737
><userinput
 
738
>dsRegionMarker</userinput
 
739
> regiooni markerite jaoks.</para>
 
740
<para
 
741
><userinput
 
742
>dsError</userinput
 
743
> vigade ja vigase süntaksi esiletõstmiseks.</para>
 
744
</listitem>
 
745
</varlistentry>
 
746
</variablelist>
 
747
 
 
748
</sect2>
 
749
 
 
750
</sect1>
 
751
 
 
752
<sect1 id="kate-highlight-rules-detailled">
 
753
<title
 
754
>Esiletõstu tuvastamise reeglid</title>
 
755
 
 
756
<para
 
757
>See sektsioon kirjeldab esiletõstu tuvastamise reegleid.</para>
 
758
 
 
759
<para
 
760
>Iga reegel otsib sobivust null või enama märgi osas stringis, mida ta testib. Kui reegel leiab sobivuse, omistatakse sobivatele märkidele reeglis määratud stiil või <emphasis
 
761
>atribuut</emphasis
 
762
> ning reegel võib soovitada konteksti vahetamist.</para>
 
763
 
 
764
<para
 
765
>Reegel näeb välja selline:</para>
 
766
 
 
767
<programlisting
 
768
>&lt;ReegliNimi atribuut=&quot;(identifikaator)&quot; kontekst=&quot;(identifikaator)&quot; [reegli spetsiifilised atribuudid] /&gt;</programlisting>
 
769
 
 
770
<para
 
771
><emphasis
 
772
>Atribuut</emphasis
 
773
> identifitseerib nime või indeksi järgi stiili, mida kasutada sobivate märkide puhul, ning <emphasis
 
774
>kontekst</emphasis
 
775
> identifitseerib vajaliku konteksti.</para>
 
776
 
 
777
<para
 
778
><emphasis
 
779
>Konteksti</emphasis
 
780
> saab identifitseerida:</para>
 
781
 
 
782
<itemizedlist>
 
783
<listitem>
 
784
<para
 
785
><emphasis
 
786
>identifikaatori</emphasis
 
787
> järgi, mis on mingi teise konteksti nimi.</para>
 
788
</listitem>
 
789
<listitem>
 
790
<para
 
791
><emphasis
 
792
>korralduse</emphasis
 
793
> järgi, mis annab mootorile käsu jääda praeguse konteksti juurde (<userinput
 
794
>#stay</userinput
 
795
>) või hüpata tagasi eelmisele stringis kasutatud kontekstile (<userinput
 
796
>#pop</userinput
 
797
>).</para>
 
798
<para
 
799
>Minemaks rohkem samme tagasi, võib võtmesõna #pop korrata: <userinput
 
800
>#pop#pop#pop</userinput
 
801
></para>
 
802
</listitem>
 
803
</itemizedlist>
 
804
 
 
805
<para
 
806
>Mõnel reeglil võivad olla <emphasis
 
807
>alamreeglid</emphasis
 
808
>, mida kaalutakse siis ja ainult siis, kui põhireegel on sobivuse leidnud. Kogu sobivale stringile antakse põhireeglis määratud atribuut. Alamreegliga reegel näeb välja selline:</para>
 
809
 
 
810
<programlisting
 
811
>&lt;ReegliNimi (atribuudid)&gt;
 
812
  &lt;AlamreegliNimi (atribuudid) /&gt;
 
813
  ...
 
814
&lt;/ReegliNimi&gt;
 
815
</programlisting>
 
816
 
 
817
 
 
818
<para
 
819
>Reegli spetsiifilised atribuudid on mitmekesised ja neid kirjeldatakse järgnevates sektsioonides.</para>
 
820
 
 
821
 
 
822
<itemizedlist>
 
823
<title
 
824
>Üldatribuudid</title>
 
825
<para
 
826
>Järgmised atribuudid on ühised kõigile reeglitele ja neid kasutatakse alati, kui esinevad <userinput
 
827
>(üldatribuudid)</userinput
 
828
>. Nõutavad atribuudid on <emphasis
 
829
>attribute</emphasis
 
830
> ja <emphasis
 
831
>context</emphasis
 
832
>, teised pole kohustuslikud. </para>
 
833
 
 
834
<listitem>
 
835
<para
 
836
><emphasis
 
837
>attribute</emphasis
 
838
>: atribuut on seotud määratud <emphasis
 
839
>itemData</emphasis
 
840
>'ga.</para>
 
841
</listitem>
 
842
<listitem>
 
843
<para
 
844
><emphasis
 
845
>context</emphasis
 
846
>: määrab konteksti, millele esiletõstu süsteem lülitub, kui reegel sobib.</para>
 
847
</listitem>
 
848
<listitem>
 
849
<para
 
850
><emphasis
 
851
>beginRegion</emphasis
 
852
>: alustab koodivoltimise plokki. Vaikimisi määramata (unset).</para>
 
853
</listitem>
 
854
<listitem>
 
855
<para
 
856
><emphasis
 
857
>endRegion</emphasis
 
858
>: lõpetab koodivoltimise ploki. Vaikimisi määramata (unset).</para>
 
859
</listitem>
 
860
<listitem>
 
861
<para
 
862
><emphasis
 
863
>lookAhead</emphasis
 
864
>: kui on tõene (<emphasis
 
865
>true</emphasis
 
866
>), ei arvesta esiletõstu süsteem sobivuse pikkus. Vaikimisi väär (<emphasis
 
867
>false</emphasis
 
868
>).</para>
 
869
</listitem>
 
870
<listitem>
 
871
<para
 
872
><emphasis
 
873
>firstNonSpace</emphasis
 
874
>: sobib ainult juhul, kui string on esimene mittetühimärk real. Vaikimisi väär (<emphasis
 
875
>false</emphasis
 
876
>).</para>
 
877
</listitem>
 
878
<listitem>
 
879
<para
 
880
><emphasis
 
881
>column</emphasis
 
882
>: sobib ainult siis, kui veerg sobib. Vaikimisi määramata (unset).</para>
 
883
</listitem>
 
884
</itemizedlist>
 
885
 
 
886
<itemizedlist>
 
887
<title
 
888
>Dünaamilised reeglid</title>
 
889
<para
 
890
>Mõned reeglid lubavad määrata lisaatribuudi <userinput
 
891
>dynamic</userinput
 
892
>, mis kasutab tõeväärtust (vaikimisi on see väär ehk <emphasis
 
893
>false</emphasis
 
894
>). Kui dynamic on tõene (<emphasis
 
895
>true</emphasis
 
896
>), võib reegel kasutada teksti esindavaid kohatäitjaid, mis sobivad <emphasis
 
897
>regulaaravaldise</emphasis
 
898
> reeglile, mis lülitub aktiivsele kontekstile oma atribuudiga <userinput
 
899
>string</userinput
 
900
> või <userinput
 
901
>char</userinput
 
902
>. Atribuudi <userinput
 
903
>string</userinput
 
904
> korral asendatakse kohatäitja <replaceable
 
905
>%N</replaceable
 
906
> (kus N on arv) vastava kohaga <replaceable
 
907
>N</replaceable
 
908
> väljakutsutavas regulaaravaldises. Atribuudi <userinput
 
909
>char</userinput
 
910
> korra peab kohatäitja olema arv <replaceable
 
911
>N</replaceable
 
912
> ja see asendatakse esimese märgiga vastavas kohas <replaceable
 
913
>N</replaceable
 
914
> väljakutsutavas regulaaravaldises. Kui reegel vähegi seda atribuuti lubab, sisaldub selles <emphasis
 
915
>(dynamic)</emphasis
 
916
>.</para>
 
917
 
 
918
<listitem>
 
919
<para
 
920
><emphasis
 
921
>dynamic</emphasis
 
922
>: võib olla tõene või väär (<emphasis
 
923
>(true|false)</emphasis
 
924
>).</para>
 
925
</listitem>
 
926
</itemizedlist>
 
927
 
 
928
<sect2 id="highlighting-rules-in-detail">
 
929
<title
 
930
>Reeglid üksikasjalikult</title>
 
931
 
 
932
<variablelist>
 
933
<varlistentry>
 
934
<term
 
935
>DetectChar</term>
 
936
<listitem>
 
937
<para
 
938
>Tuvastab üksikut konkreetset märki. Tavaliselt kasutatakse näiteks jutumärkides stringi alguse ja lõpu leidmiseks.</para>
 
939
<programlisting
 
940
>&lt;DetectChar char=&quot;(märk)&quot; (üldatribuudid) (dynamic) /&gt;</programlisting>
 
941
<para
 
942
>Atribuut <userinput
 
943
>char</userinput
 
944
> määrab otsitava märgi.</para>
 
945
</listitem>
 
946
</varlistentry>
 
947
 
 
948
<varlistentry>
 
949
<term
 
950
>Detect2Chars</term>
 
951
<listitem>
 
952
<para
 
953
>Tuvastab kaks konkreetset märki määratud järjekorras.</para>
 
954
<programlisting
 
955
>&lt;Detect2Chars char=&quot;(märk)&quot; char1=&quot;(märk)&quot; (üldatribuudid) (dynamic) /&gt;</programlisting>
 
956
<para
 
957
>Atribuut <userinput
 
958
>char</userinput
 
959
> defineerib esimese otsitava märgi, <userinput
 
960
>char1</userinput
 
961
> teise.</para>
 
962
</listitem>
 
963
</varlistentry>
 
964
 
 
965
<varlistentry>
 
966
<term
 
967
>AnyChar</term>
 
968
<listitem>
 
969
<para
 
970
>Tuvastab ühe märgi konkreetsete märkide hulgast.</para>
 
971
<programlisting
 
972
>&lt;AnyChar String=&quot;(string)&quot; (üldatribuudid) /&gt;</programlisting>
 
973
<para
 
974
>Atribuut <userinput
 
975
>String</userinput
 
976
> määrab märgikogumi.</para>
 
977
</listitem>
 
978
</varlistentry>
 
979
 
 
980
<varlistentry>
 
981
<term
 
982
>StringDetect</term>
 
983
<listitem>
 
984
<para
 
985
>Tuvastab täpse stringi.</para>
 
986
<programlisting
 
987
>&lt;StringDetect String=&quot;(string)&quot; [insensitive=&quot;true|false;&quot;] (üldatribuudid) (dynamic) /&gt;</programlisting>
 
988
<para
 
989
>Atribuut <userinput
 
990
>String</userinput
 
991
> määrab otsitava stringi. Atribuut <userinput
 
992
>insensitive</userinput
 
993
> on vaikimisi <userinput
 
994
>false</userinput
 
995
> ning seda kasutab stringivõrdlusfunktsioon. Kui väärtus on <userinput
 
996
>true</userinput
 
997
>, kasutatakse tõstutundetut võrdlust.</para>
 
998
</listitem>
 
999
</varlistentry>
 
1000
 
 
1001
<varlistentry>
 
1002
<term
 
1003
>StringDetect</term>
 
1004
<listitem>
 
1005
<para
 
1006
>Täpse stringi tuvastamine, kuid lisaks on vajalik sõnapiir, nagu näiteks punkt <userinput
 
1007
>'.'</userinput
 
1008
> või tühimärk sõna algul ja lõpul. <userinput
 
1009
>\b&lt;string&gt;\b</userinput
 
1010
> võib käsitada regulaaravaldisena, kuid see on kiirem kui reegel <userinput
 
1011
>RegExpr</userinput
 
1012
>.</para>
 
1013
<programlisting
 
1014
>&lt;WordDetect String=&quot;(string)&quot; [insensitive=&quot;true|false&quot;] (üldatribuudid) (dynamic) /&gt;</programlisting>
 
1015
<para
 
1016
>Atribuut <userinput
 
1017
>String</userinput
 
1018
> määrab otsitava stringi. Atribuut <userinput
 
1019
>insensitive</userinput
 
1020
> on vaikimisi <userinput
 
1021
>false</userinput
 
1022
> ning seda kasutab stringivõrdlusfunktsioon. Kui väärtus on <userinput
 
1023
>true</userinput
 
1024
>, kasutatakse tõstutundetut võrdlust.</para>
 
1025
<para
 
1026
>Alates Kate 3.5 (KDE 4.5)</para>
 
1027
</listitem>
 
1028
</varlistentry>
 
1029
 
 
1030
<varlistentry>
 
1031
<term
 
1032
>RegExpr</term>
 
1033
<listitem>
 
1034
<para
 
1035
>Otsib regulaaravaldise sobivust.</para>
 
1036
<programlisting
 
1037
>&lt;RegExpr String=&quot;(string)&quot; [insensitive=&quot;true|false;&quot;] [minimal=&quot;true|false&quot;] (üldatribuudid) (dynamic) /&gt;</programlisting>
 
1038
<para
 
1039
>Atribuut <userinput
 
1040
>String</userinput
 
1041
> määrab regulaaravaldise.</para>
 
1042
<para
 
1043
><userinput
 
1044
>insensitive</userinput
 
1045
> on vaikimisi <userinput
 
1046
>false</userinput
 
1047
> ja seda kasutab regulaaravaldise mootor.</para>
 
1048
<para
 
1049
><userinput
 
1050
>minimal</userinput
 
1051
> on vaikimisi <userinput
 
1052
>false</userinput
 
1053
> ja seda kasutab regulaaravaldise mootor.</para>
 
1054
<para
 
1055
>Kuna reeglid otsivad sobivust alati aktiivse stringi algusest, siis viitab regulaaravaldis, mille alguses seisab juurdelisamismärk (<literal
 
1056
>^</literal
 
1057
>), et reegel peab sobivust otsima ainult rea algusest.</para>
 
1058
<para
 
1059
>Täpsemat infot vaata peatükist <link linkend="regular-expressions"
 
1060
>Regulaaravaldised</link
 
1061
>.</para>
 
1062
</listitem>
 
1063
</varlistentry>
 
1064
 
 
1065
<varlistentry>
 
1066
<term
 
1067
>keyword</term>
 
1068
<listitem>
 
1069
<para
 
1070
>Tuvastab võtmesõna määratud nimekirjast.</para>
 
1071
<programlisting
 
1072
>&lt;keyword String=&quot;(nimekirja nimi)&quot; (üldatribuudid) /&gt;</programlisting>
 
1073
<para
 
1074
>Atribuut <userinput
 
1075
>String</userinput
 
1076
> identifitseerib võtmesõnade nimekirja nime järgi. Sellise nimega nimekiri peab olemas olema.</para>
 
1077
</listitem>
 
1078
</varlistentry>
 
1079
 
 
1080
<varlistentry>
 
1081
<term
 
1082
>Int</term>
 
1083
<listitem>
 
1084
<para
 
1085
>Tuvastab täisarvu.</para>
 
1086
<para
 
1087
><programlisting
 
1088
>&lt;Int (üldatribuudid) (dynamic) /&gt;</programlisting
 
1089
></para>
 
1090
<para
 
1091
>Sellel reeglil ei ole spetsiifilisi atribuute. Tihti kasutatakse alamreegleid, et tuvastada arvu järel <userinput
 
1092
>L</userinput
 
1093
> ja <userinput
 
1094
>U</userinput
 
1095
> kombinatsioone, mis osutavad programmikoodis täisarvu tüübile. Õigupoolest on alamreeglina lubatud kõik reeglid, kuid <acronym
 
1096
>DTD</acronym
 
1097
> lubab siiski ainult alamreeglit <userinput
 
1098
>StringDetect</userinput
 
1099
>.</para>
 
1100
<para
 
1101
>Järgnev näide otsib täisarve märgi 'L' järel. <programlisting
 
1102
>&lt;Int attribute="Decimal" context="#stay" &gt;
 
1103
  &lt;StringDetect attribute="Decimal" context="#stay" String="L" insensitive="true"/&gt;
 
1104
&lt;/Int&gt;
 
1105
</programlisting
 
1106
></para>
 
1107
 
 
1108
</listitem>
 
1109
</varlistentry>
 
1110
 
 
1111
<varlistentry>
 
1112
<term
 
1113
>Float</term>
 
1114
<listitem>
 
1115
<para
 
1116
>Tuvastab ujukomaarvu.</para>
 
1117
<para
 
1118
><programlisting
 
1119
>&lt;Float (üldatribuudid) /&gt;</programlisting
 
1120
></para>
 
1121
<para
 
1122
>Sellel reeglil ei ole spetsiifilisi atribuute. <userinput
 
1123
>AnyChar</userinput
 
1124
> on lubatud alamreeglina ning tüüpiliselt kasutatakse seda kombinatsioonide tuvastamiseks (vaata võrdluseks reeglit <userinput
 
1125
>Int</userinput
 
1126
>).</para>
 
1127
</listitem>
 
1128
</varlistentry>
 
1129
 
 
1130
<varlistentry>
 
1131
<term
 
1132
>HICOct</term>
 
1133
<listitem>
 
1134
<para
 
1135
>Tuvastab kaheksandsüsteemis arvu.</para>
 
1136
<para
 
1137
><programlisting
 
1138
>&lt;HICOct (üldatribuudid) /&gt;</programlisting
 
1139
></para>
 
1140
<para
 
1141
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1142
</listitem>
 
1143
</varlistentry>
 
1144
 
 
1145
<varlistentry>
 
1146
<term
 
1147
>HICHex</term>
 
1148
<listitem>
 
1149
<para
 
1150
>Tuvastab kuueteistkümnendsüsteemis arvu.</para>
 
1151
<para
 
1152
><programlisting
 
1153
>&lt;HlCHex (üldatribuudid) /&gt;</programlisting
 
1154
></para>
 
1155
<para
 
1156
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1157
</listitem>
 
1158
</varlistentry>
 
1159
 
 
1160
<varlistentry>
 
1161
<term
 
1162
>HICStringChar</term>
 
1163
<listitem>
 
1164
<para
 
1165
>Tuvastab paomärgi.</para>
 
1166
<para
 
1167
><programlisting
 
1168
>&lt;HlCStringChar (üldatribuudid) /&gt;</programlisting
 
1169
></para>
 
1170
<para
 
1171
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1172
 
 
1173
<para
 
1174
>See otsib sobivusi nähtamatutele märkidele, mida tihti programmikoodis kasutatakse, näiteks <userinput
 
1175
>\n</userinput
 
1176
> (uus rida) või <userinput
 
1177
>\t</userinput
 
1178
> (tabeldusmärk).</para>
 
1179
 
 
1180
<para
 
1181
>Leitakse järgmised märgid, kui neile eelneb längkriips (<literal
 
1182
>\</literal
 
1183
>): <userinput
 
1184
>abefnrtv&quot;'?\</userinput
 
1185
>. Lisaks leitakse kuueteistkümnendsüsteemis varjestatud arvud, näiteks <userinput
 
1186
>\xff</userinput
 
1187
>, ja kaheksandsüsteemis varjestatud arvud, näiteks <userinput
 
1188
>\033</userinput
 
1189
>.</para>
 
1190
 
 
1191
</listitem>
 
1192
</varlistentry>
 
1193
 
 
1194
<varlistentry>
 
1195
<term
 
1196
>HlCChar</term>
 
1197
<listitem>
 
1198
<para
 
1199
>Tuvastab C märgi.</para>
 
1200
<para
 
1201
><programlisting
 
1202
>&lt;HlCChar (üldatribuudid) /&gt;</programlisting
 
1203
></para>
 
1204
<para
 
1205
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1206
 
 
1207
<para
 
1208
>Leitakse ülakriipsude vahele võetud C märgid, näiteks <userinput
 
1209
>'c'</userinput
 
1210
>. Ülakriipsude vahel võib olla lihtne märk või ka varjestatud märk. Viimaste kohta vaata HlCStringChar.</para>
 
1211
 
 
1212
</listitem>
 
1213
</varlistentry>
 
1214
 
 
1215
<varlistentry>
 
1216
<term
 
1217
>RangeDetect</term>
 
1218
<listitem>
 
1219
<para
 
1220
>Tuvastab stringi määratud algus- ja lõpumärgiga.</para>
 
1221
<programlisting
 
1222
>&lt;RangeDetect char=&quot;(märk)&quot;  char1=&quot;(märk)&quot; (üldatribuudid) /&gt;</programlisting>
 
1223
<para
 
1224
><userinput
 
1225
>char</userinput
 
1226
> määrab vahemikku alustava märgi ning <userinput
 
1227
>char1</userinput
 
1228
> seda lõpetava märgi.</para>
 
1229
<para
 
1230
>See on kasulik näiteks väiksemate jutumärkides stringides ja muu sellise leidmiseks, kuid tasub tähele panna, et esiletõstu mootor töötab korraga ühel real ega leia stringe, mis ulatuvad üle reapiiri.</para>
 
1231
</listitem>
 
1232
</varlistentry>
 
1233
 
 
1234
<varlistentry>
 
1235
<term
 
1236
>LineContinue</term>
 
1237
<listitem>
 
1238
<para
 
1239
>Tuvastab sobivused rea lõpus.</para>
 
1240
<programlisting
 
1241
>&lt;LineContinue (üldatribuudid) /&gt;</programlisting>
 
1242
<para
 
1243
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1244
<para
 
1245
>See reegel on abiks konteksti lülitamisel rea lõpus, kui viimane märk on längkriips (<userinput
 
1246
>'\'</userinput
 
1247
>). Seda vajab näiteks C/C++ makrode või stringide jätkamiseks.</para>
 
1248
</listitem>
 
1249
</varlistentry>
 
1250
 
 
1251
<varlistentry>
 
1252
<term
 
1253
>IncludeRules</term>
 
1254
<listitem>
 
1255
<para
 
1256
>Kaasatakse teise konteksti või keele/faili reeglid.</para>
 
1257
<programlisting
 
1258
>&lt;IncludeRules context=&quot;kontekstilink&quot; [includeAttrib=&quot;true|false&quot;] /&gt;</programlisting>
 
1259
 
 
1260
<para
 
1261
>Atribuut <userinput
 
1262
>context</userinput
 
1263
> määrab, milline kontekst kaasata.</para>
 
1264
<para
 
1265
>Kui see on lihtne string, kaasatakse aktiivsesse konteksti kõik defineeritud reeglid, näiteks: <programlisting
 
1266
>&lt;IncludeRules context=&quot;teineKontekst&quot; /&gt;</programlisting
 
1267
></para>
 
1268
 
 
1269
<para
 
1270
>Kui stringi alguses on <userinput
 
1271
>##</userinput
 
1272
>, otsib esiletõstu süsteem antud nimega keeledefinitsiooni, näiteks: <programlisting
 
1273
>&lt;IncludeRules context=&quot;##C++&quot; /&gt;</programlisting
 
1274
></para>
 
1275
<para
 
1276
>Kui atribuut <userinput
 
1277
>includeAttrib</userinput
 
1278
> on tõene (<emphasis
 
1279
>true</emphasis
 
1280
>), muudetakse sihtatribuut lähteatribuudiks. Seda on vaja näiteks kommenteerimise jaoks, kui kaasatud kontekstis sobiv tekst on teistsuguse esiletõstuga kui algkontekstis. </para>
 
1281
</listitem>
 
1282
</varlistentry>
 
1283
 
 
1284
 
 
1285
<varlistentry>
 
1286
<term
 
1287
>DetectSpaces</term>
 
1288
<listitem>
 
1289
<para
 
1290
>Tuvastab tühimärgid.</para>
 
1291
<programlisting
 
1292
>&lt;DetectSpaces (üldatribuudid) /&gt;</programlisting>
 
1293
 
 
1294
<para
 
1295
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1296
<para
 
1297
>Seda on mõtet kasutada, kui tead, et eespool asub tühimärke, näiteks trepitud ridade alguses. Sel juhul jäetakse kõik tühimärgid korraga vahele, mitte ei hakata erinevaid reegleid läbi uurima.</para>
 
1298
</listitem>
 
1299
</varlistentry>
 
1300
 
 
1301
 
 
1302
<varlistentry>
 
1303
<term
 
1304
>DetectIdentifier</term>
 
1305
<listitem>
 
1306
<para
 
1307
>Tuvastab identifikaatoristringid (regulaaravaldisena [a-zA-Z_][a-zA-Z0-9_]*).</para>
 
1308
<programlisting
 
1309
>&lt;DetectIdentifier (üldatribuudid) /&gt;</programlisting>
 
1310
 
 
1311
<para
 
1312
>Sellel reeglil ei ole spetsiifilisi atribuute.</para>
 
1313
<para
 
1314
>Seda on mõtet kasutada, kui soovid terve sõnastringi korraga vahele jätta, mitte lasta seda uurida mitmel reeglil.</para>
 
1315
</listitem>
 
1316
</varlistentry>
 
1317
 
 
1318
</variablelist>
 
1319
</sect2>
 
1320
 
 
1321
<sect2>
 
1322
<title
 
1323
>Nõuanded ja soovitused</title>
 
1324
 
 
1325
<itemizedlist>
 
1326
<para
 
1327
>Kui oled aru saanud, kuidas käib konteksti lülitamine, on juba lihtne hakata ise esiletõstu definitsioone kirjutama. Siiski tuleb alati hoolikalt kontrollida, millist reeglit millises olukorras kasutada. Regulaaravaldised on väga võimsad vahendid, kuid võrreldes teiste reeglitega suhteliselt aeglased. Niisiis tasuks silmas pidada järgmisi nõuandeid. </para>
 
1328
 
 
1329
<listitem>
 
1330
<para
 
1331
>Ainult kahe märgi sobivuse leidmiseks kasuta <userinput
 
1332
>Detect2Chars</userinput
 
1333
>, mitte <userinput
 
1334
>StringDetect</userinput
 
1335
>. Sama käib <userinput
 
1336
>DetectChar</userinput
 
1337
> kohta.</para>
 
1338
</listitem>
 
1339
<listitem>
 
1340
<para
 
1341
>Regulaaravaldisi on lihtne kasutada, kuid sageli saavutab sama tulemuse märksa kiiremini. Oletame, et soovid leida ainult märgi <userinput
 
1342
>'#'</userinput
 
1343
>, kui see on real esimene. Regulaaravaldis näeks välja nii: <programlisting
 
1344
>&lt;RegExpr attribute=&quot;Macro&quot; context=&quot;macro&quot; String=&quot;^\s*#&quot; /&gt;</programlisting
 
1345
> Sama tulemuse saavutab aga palju kiiremini nii: <programlisting
 
1346
>&lt;DetectChar attribute=&quot;Macro&quot; context=&quot;macro&quot; char=&quot;#&quot; firstNonSpace=&quot;true&quot; /&gt;</programlisting
 
1347
> Kui soovid leida regulaaravaldise <userinput
 
1348
>'^#'</userinput
 
1349
> sobivuse, on samuti mõistlik kasutada <userinput
 
1350
>DetectChar</userinput
 
1351
>, lisades sellele atribuudi <userinput
 
1352
>column=&quot;0&quot;</userinput
 
1353
>. Atribuut <userinput
 
1354
>column</userinput
 
1355
> võtab aluseks märkide arvu, pidades niisiis tabeldusmärki üheks märgiks. </para>
 
1356
</listitem>
 
1357
<listitem>
 
1358
<para
 
1359
>Konteksti saab lülitada ilma märke töötlemata. Eeldame, et soovid lülitada konteksti, kui esineb string <userinput
 
1360
>*/</userinput
 
1361
>, aga tahad seda stringi järgmises kontekstis töödelda. Alltoodud reegel leiab sobivuse ning atribuut <userinput
 
1362
>lookAhead</userinput
 
1363
> sunnib esiletõstu säilitama sobiva stringi järgmises kontekstis. <programlisting
 
1364
>&lt;Detect2Chars attribute=&quot;Comment&quot; context=&quot;#pop&quot; char=&quot;*&quot; char1=&quot;/&quot; lookAhead=&quot;true&quot; /&gt;</programlisting>
 
1365
</para>
 
1366
</listitem>
 
1367
<listitem>
 
1368
<para
 
1369
>Kui tead, et esineb palju tühimärke, kasuta <userinput
 
1370
>DetectSpaces</userinput
 
1371
>.</para>
 
1372
</listitem>
 
1373
<listitem>
 
1374
<para
 
1375
>Kasuta <userinput
 
1376
>DetectIdentifier</userinput
 
1377
>, mitte regulaaravaldist <userinput
 
1378
>'[a-zA-Z_]\w*'</userinput
 
1379
>.</para>
 
1380
</listitem>
 
1381
<listitem>
 
1382
<para
 
1383
>Kasuta võimaluse korral alati vaikestiile. Sel moel viibi kasutaja alati tuttavas keskkonnas.</para>
 
1384
</listitem>
 
1385
<listitem>
 
1386
<para
 
1387
>Uuri teisi XML-faile selgitamaks, kuidas teised on oma reegleid teostanud.</para>
 
1388
</listitem>
 
1389
<listitem>
 
1390
<para
 
1391
>XML-faile saab kontrollida käsuga <command
 
1392
>xmllint --dtdvalid language.dtd mySyntax.xml</command
 
1393
>.</para>
 
1394
</listitem>
 
1395
<listitem>
 
1396
<para
 
1397
>Sageli keerukaid regulaaravaldisi vajades võiks kasutada olemeid (<emphasis
 
1398
>ENTITIES</emphasis
 
1399
>). Näide:</para>
 
1400
<programlisting
 
1401
>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 
1402
&lt;!DOCTYPE language SYSTEM "language.dtd"
 
1403
[
 
1404
        &lt;!ENTITY myref    "[A-Za-z_:][\w.:_-]*"&gt;
 
1405
]&gt;
 
1406
</programlisting>
 
1407
<para
 
1408
>Seejärel võid regulaaravaldise asemel kasutada <emphasis
 
1409
>&amp;myref;</emphasis
 
1410
>.</para>
 
1411
</listitem>
 
1412
</itemizedlist>
 
1413
</sect2>
 
1414
 
 
1415
</sect1>
 
1416
 
 
1417
</appendix>