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

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter
  • Date: 2011-08-26 16:23:10 UTC
  • mfrom: (1.12.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20110826162310-w5ewhne9re1m2ezk
Tags: 4:4.7.0-0ubuntu1
* New upstream release (svn: 1242643, type: stable)
* Bump kdelibs deps to 4.7.0
* Update readme.source with new branch url
* Update control VCS entries with new branch url
* Stop getting old kdepim 4.5 translations (4.7 is now in oneiric)

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>