docs table reference and paragraph indent fix

This commit is contained in:
jorenchik
2024-11-09 11:18:14 +02:00
parent 96fd6a8ec0
commit 14016a8ccb
4 changed files with 114 additions and 184 deletions

View File

@@ -1,4 +1,4 @@
#import "layout.typst": project, indent-par
#import "layout.typst": project
#import "@preview/i-figured:0.1.0"
#import "@preview/tablex:0.0.6": tablex, rowspanx, colspanx, cellx
#import "utils.typst": *
@@ -67,24 +67,20 @@
== Nolūks
#indent-par([
Šī darba nolūks ir specificēt lietotnes programmatūras prasības un
aprakstīt tās projektējumu, kas tiek aprakstīta un izstrādāta
kvalifikācijas darba ietvaros.
])
Šī darba nolūks ir specificēt lietotnes programmatūras prasības un
aprakstīt tās projektējumu, kas tiek aprakstīta un izstrādāta
kvalifikācijas darba ietvaros.
== Darbības sfēra
#indent-par([
// Kas ir atmiņas kartes
Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni,
studenti un citi cilvēki, kas mācās vai studē, iegaumē materiālu. Šādu
kartīšu pamatā parasti ir priekša un aizmugure. Priekšā atrodas jautājums
vai uzdevums vai cita informācija, kas uzstāda mentālu vai praktisku
uzdevumu, iespējams iekļaujot arī mājieni. Aizmugurē atrodas atbildes
teksts, kas ar sevi atbild vai parāda pareizu atbildi uz priekšā uzstādītu
jautājumu vai uzdevumu.
])
// Kas ir atmiņas kartes
Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni,
studenti un citi cilvēki, kas mācās vai studē, iegaumē materiālu. Šādu
kartīšu pamatā parasti ir priekša un aizmugure. Priekšā atrodas jautājums
vai uzdevums vai cita informācija, kas uzstāda mentālu vai praktisku
uzdevumu, iespējams iekļaujot arī mājieni. Aizmugurē atrodas atbildes
teksts, kas ar sevi atbild vai parāda pareizu atbildi uz priekšā uzstādītu
jautājumu vai uzdevumu.
// Mācīšanās process un spaced-repetition
Mācīšanās nolūkiem tiek veidotas vairākas atmiņas kartītes uz līdzīgu tēmu,
@@ -125,21 +121,17 @@ parāda produkta saistību ar atmiņu.
== Saistība ar citiem dokumentiem
#indent-par([
Programmatūras prasībus specifikācijas ir izstrādāta, ievērojot LVS 68:1996
"Programmatūras prasību specifikācijas ceļvedis" standarta un LVS 72:1996
"Ieteicamā prakse programmatūras projektējuma aprakstīšanai" standarta
prasības.
])
Programmatūras prasībus specifikācijas ir izstrādāta, ievērojot LVS 68:1996
"Programmatūras prasību specifikācijas ceļvedis" standarta un LVS 72:1996
"Ieteicamā prakse programmatūras projektējuma aprakstīšanai" standarta
prasības.
== Pārskats
// apraksts: Ievads
#indent-par([
Ievadā tiek definēts nolūks darbības sfēra, aprakstīta galvenā programmatūras
produkta būtība un mērķi, saistītie dokumenti.
])
Ievadā tiek definēts nolūks darbības sfēra, aprakstīta galvenā programmatūras
produkta būtība un mērķi, saistītie dokumenti.
Vispārējā apraksta sadaļā tiek aprakstīts esošais stāvoklis, pasūtītājs, produkta perspektīva,
galvenās darījumprasības, pieņēmumi un atkarības.
@@ -159,12 +151,10 @@ plūsmas, funkcijas un risinājuma nefunkcionālās prasības.
// @TODO: go over the thing
#indent-par([
"Mdemory" lietotne piedāvā vairāku specializēto atmiņas kartīšu veidu
funkcionalitāti un pilnīgu vienkārša teksta atmiņas kartīšu definēšanu un
pārvāldību. Vairāki esošie risinājumi piedāvā daļu no minētām iespējām, bet
gan nepiedāvā abas iespējas.
])
"Mdemory" lietotne piedāvā vairāku specializēto atmiņas kartīšu veidu
funkcionalitāti un pilnīgu vienkārša teksta atmiņas kartīšu definēšanu un
pārvāldību. Vairāki esošie risinājumi piedāvā daļu no minētām iespējām, bet
gan nepiedāvā abas iespējas.
// Quizlet
Daži risinājumi iekļauj vairākus specializētus jautājumu veidus, kā grupēšanas
@@ -200,34 +190,28 @@ slēptā formātā, kas apgrūtina kartīšu pārvaldību un pārnešanu.
== Pasūtītājs
#indent-par([
Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas
kvalifikācijas darba ietvaros.
])
Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas
kvalifikācijas darba ietvaros.
== Produkta perspektīva
#indent-par([
Risinājums ir patstāvīga darbvirsmas lietotne. Lietotnes izstrādē ir izmantotas
lietotnes saskarnes bibliotēkas un programmēšanas valodas standarta bibliotēka.
Risinājums lasīs un izmainīs teksta failus no lietotāja norādītās direktorijas.
])
Risinājums ir patstāvīga darbvirsmas lietotne. Lietotnes izstrādē ir izmantotas
lietotnes saskarnes bibliotēkas un programmēšanas valodas standarta bibliotēka.
Risinājums lasīs un izmainīs teksta failus no lietotāja norādītās direktorijas.
== Risinājuma lietotāji
#indent-par([
Risinājumam ir viena lietotāju grupa, kam ir pieejamas visas risinājuma
iespējas un funkcijas.
Risinājuma augsta līmeņa datu plūsmas ir attēlota 0. līmeņa datu plūsmas
diagrammā (DPD; skat. @fig:dpd0 attēls). Lietotāju galvenā datu apmaiņa ir
atmiņas kartīšu dati un dati par saskarni ar kartītēm. DPD ir iekļautas trīs
datu glabātuves: failu glabātuve, pagaidu kartīšu glabātuve un konfigurācijas
glabātuve.
])
Risinājumam ir viena lietotāju grupa, kam ir pieejamas visas risinājuma
iespējas un funkcijas.
Risinājuma augsta līmeņa datu plūsmas ir attēlota 0. līmeņa datu plūsmas
diagrammā (DPD; skat. @fig:dpd0 attēls). Lietotāju galvenā datu apmaiņa ir
atmiņas kartīšu dati un dati par saskarni ar kartītēm. DPD ir iekļautas trīs
datu glabātuves: failu glabātuve, pagaidu kartīšu glabātuve un konfigurācijas
glabātuve.
Failu glabātuve ir vieta, kur tiek glabātas kartītes vienkārša teskta formātā.
Tas ir direktorijs ar noteikta formāta failiem (skat. attēlu @fig:conceptual-er
un tabulas 2.1-2.6). Šo glabātuvi pārvalda lietotājs -- brīvi pievieno,
un tabulas @tbl:DF01\-@tbl:DF06). Šo glabātuvi pārvalda lietotājs -- brīvi pievieno,
modificē un pārstrukturē direktorijā esošos failus un apakšdirektorijus.
Pagaidu kartīšu glabātuve glabā apskatāmās kartītes un visus izmainītos atmiņas
@@ -314,66 +298,31 @@ ko izmanto lietotne.
== Funkcionālās prasības
#let ref_df01 = [(skat. tabulu 2.1)]
#let ref_df02 = [(skat. tabulu 2.2)]
#let ref_df03 = [(skat. tabulu 2.3)]
#let ref_df04 = [(skat. tabulu 2.4)]
#let ref_df05 = [(skat. tabulu 2.5)]
#let ref_df06 = [(skat. tabulu 2.6)]
#let ref_ds01 = [(skat. tabulu 2.7)]
#let ref_ds02 = [(skat. tabulu 2.8)]
#let ref_ds03 = [(skat. tabulu 2.9)]
#let ref_ds04 = [(skat. tabulu 2.10)]
#let ref_pr01 = [(skat. tabulu 2.12)]
#let ref_pr02 = [(skat. tabulu 2.13)]
#let ref_ab01 = [(skat. tabulu 2.14)]
#let ref_ab02 = [(skat. tabulu 2.15)]
#let ref_ab03 = [(skat. tabulu 2.16)]
#let ref_ab04 = [(skat. tabulu 2.17)]
#let ref_ab05 = [(skat. tabulu 2.18)]
#let ref_ab06 = [(skat. tabulu 2.19)]
#let ref_ab07 = [(skat. tabulu 2.20)]
#let ref_ab08 = [(skat. tabulu 2.21)]
#let ref_ma01 = [(skat. tabulu 2.22)]
#let ref_ma02 = [(skat. tabulu 2.23)]
#let ref_ma03 = [(skat. tabulu 2.24)]
#let ref_ma04 = [(skat. tabulu 2.25)]
#let ref_ma05 = [(skat. tabulu 2.26)]
#let ref_kf01 = [(skat. tabulu 2.37)]
#let ref_kf02 = [(skat. tabulu 2.38)]
#let ref_kf03 = [(skat. tabulu 2.39)]
#let questionSource = [
simbolu virkne, kas satur jautājumus formātā, kas atbilst datu formātiem
#link(<DF02>)[DF02],
#link(<DF03>)[DF03],
#link(<DF04>)[DF04],
#link(<DF05>)[DF05] (skat. tabulas 2.2.-2.5.)
#link(<DF05>)[DF05] (skat. tabulas @tbl:DF02\-@tbl:DF05)
];
#let questionList = [saraksts ar objektiem, kas atbilst datu struktūrai #link(<DS01>)[DS01] #ref_ds01];
#let question = [objekts, kas atbilst datu struktūrai #link(<DS01>)[DS01] #ref_ds01];
#let pageList = [saraksts ar objektiem, kas atbilst datu struktūrai #link(<DS02>)[DS02] #ref_ds02];
#let datetime = [simbola virkne formātā, kas atbilst datu struktūrai #link(<DS03>)[DS03] #ref_ds03];
#let questionList = [saraksts ar objektiem, kas atbilst datu struktūrai #link(<DS01>)[DS01] (skat. tabulu @tbl:DS01)];
#let question = [objekts, kas atbilst datu struktūrai #link(<DS01>)[DS01] (skat. tabulu @tbl:DS01)];
#let pageList = [saraksts ar objektiem, kas atbilst datu struktūrai #link(<DS02>)[DS02] (skat. tabulu @tbl:DS02)];
#let datetime = [simbola virkne formātā, kas atbilst datu struktūrai #link(<DS03>)[DS03] (skat. tabulu @tbl:DS03)];
#let uint = [vesels pozitīvs skaitlis];
#let mdemFilePath = [simbolu virkne, kas atbilst failam ar noteitu paplašinājumu];
#let uint = [vesels pozitīvs skaitlis];
#let mdemFilePath = [simbolu virkne, kas atbilst failam ar noteitu paplašinājumu];
#let listWithCorrectFlags = [Izvēlēto atbilžu simbolu virkņu saraksts ar pareizuma karodziņu vērtībām];
#let configValue = [viens no: skaitlis, simbolu virkne, karodziņš];
#let changeIndicator = [Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts];
#let configValue = [viens no: skaitlis, simbolu virkne, karodziņš];
#let changeIndicator = [Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts];
=== Augsta līmeņa kartīšu valodas specifikācija
#indent-par([
Šajā apakšsadaļā tiks aprakstīta domēna specifiska valodas formāta
vienības, kas ir sastāvdaļas no valodas, kas ir izmantota risinājumā,
definējot, glabājot un rediģējot atmiņas kartītes. Formāti ir aprakstīti
tabulās 2.1.-2.6.
])
Šajā apakšsadaļā tiks aprakstīta domēna specifiska valodas formāta
vienības, kas ir sastāvdaļas no valodas, kas ir izmantota risinājumā,
definējot, glabājot un rediģējot atmiņas kartītes. Formāti ir aprakstīti
tabulās @tbl:DF01\-DF06.
==== Kartīšu veidi
@@ -486,7 +435,7 @@ ko izmanto lietotne.
"DF06",
[
Kartītes pirmteksta failā var tikt iekļauti vairāki dažādu veidu jautājumi.
Sākumā var būt datuma un laika simbolu virkne, kas atbilst datu struktūrai #link(<DS02>)[DS02] #ref_ds02.
Sākumā var būt datuma un laika simbolu virkne, kas atbilst datu struktūrai #link(<DS02>)[DS02] (skat. tabulu @tbl:DS02).
],
[
```
@@ -516,11 +465,9 @@ ko izmanto lietotne.
=== Formātu un datu struktūru specifikācija
#indent-par([
Šajā apakšsadaļā tiks apskatīti ievades un izvades vērtību
formāti, kas tiks izmantoti funkciju aprakstos.
Formāti ir aprakstīti tabulās 2.7.-2.9.
])
Šajā apakšsadaļā tiks apskatīti ievades un izvades vērtību formāti, kas tiks
izmantoti funkciju aprakstos. Formāti ir aprakstīti tabulās
@tbl:DS01\-@tbl:DS04.
#io-table(
"Kartīšu datu struktūra",
@@ -579,11 +526,9 @@ ko izmanto lietotne.
=== Funkciju sadalījums moduļos
#indent-par([
Risinājuma moduļi ar to saistītām datu plūsmām un datu glabātuvēm ir attēlots
1\. līmeņa DPD (skat. @fig:dpd1 attēls). Funkciju sadalījums moduļos ir
apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula).
])
Risinājuma moduļi ar to saistītām datu plūsmām un datu glabātuvēm ir attēlots
1\. līmeņa DPD (skat. @fig:dpd1 attēls). Funkciju sadalījums moduļos ir
apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula).
#figure(
caption: "1. līmeņa datu plūsmas diagramma",
@@ -630,10 +575,8 @@ ko izmanto lietotne.
=== Kopīgas procedūras
#indent-par([
Vairākas prasībās definētās funkcijas izmanto kopīgas procedūras, kas tiek
definētas tabulās 2.12. un 2.13.
])
Vairākas prasībās definētās funkcijas izmanto kopīgas procedūras, kas tiek
definētas tabulās @tbl:PR01 un @tbl:PR02.
#procedure-table(
"Teksta jautājumu transpilēšana",
@@ -668,7 +611,7 @@ ko izmanto lietotne.
[
+ Saraksts ar jautājumiem -- #questionList\;
+ Kļūda ar tekstu un tās pozīciju saturā -- paziņojuma objekts, kas atbilst
datu struktūrai #link(<DS04>)[DS04] #ref_ds04\;
datu struktūrai #link(<DS04>)[DS04] (skat. tabulu @tbl:DS04)\;
],
) <PR01>
@@ -706,15 +649,13 @@ ko izmanto lietotne.
=== Atmiņas bāzes modulis
#indent-par([
Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par
mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa
funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas
mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves
failiem, kas satur atmiņu kartīšu informāciju. Ar funkcijām saistītas datu plūsmas
ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu).
Moduļa funkcijas tiek definētas tabulās 2.14.-2.21.
])
Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par
mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa
funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas
mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves
failiem, kas satur atmiņu kartīšu informāciju. Ar funkcijām saistītas datu plūsmas
ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu).
Moduļa funkcijas tiek definētas tabulās @tbl:AB01\-@tbl:AB08.
#figure(
caption: "Atmiņas bāzes moduļa 2.līmeņa datu plūsmas diagramma",
@@ -740,7 +681,7 @@ ko izmanto lietotne.
+ Tiek nolasīts datums un laiks no faila sākuma, ja tāds eksistē:
+ Ja datuma un laika formāts nav korekts, parāda 2. paziņojumu
ar atbilstošu iemeslu un kļūdas pazīmi, beidz apstrādi.
+ Tiek iegūti jautājuma objekti, izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01\;
+ Tiek iegūti jautājuma objekti, izmantojot procedūru #link(<PR01>)[PR01] (skat. tabulu @tbl:PR01)\;
+ Ja radās kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz
apstrādi.
+ Ja kādā no apstrādes posmiem radās kļūda, parāda 2. paziņojumu
@@ -824,7 +765,7 @@ ko izmanto lietotne.
],
[
+ Ja ievadīts teksts, parāda 1. paziņojumu, beidz apstrādi;
+ Apstrādā simbolu virkni, izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01\;
+ Apstrādā simbolu virkni, izmantojot procedūru #link(<PR01>)[PR01] (skat. tabulu @tbl:PR01)\;
+ Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju,
beidz apstrādi;
],
@@ -854,7 +795,7 @@ ko izmanto lietotne.
+ Jautājums -- #question\;
],
[
+ Izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01, jautājums tiek detranspilēts
+ Izmantojot procedūru #link(<PR01>)[PR01] (skat. tabulu @tbl:PR01), jautājums tiek detranspilēts
pirmtekstā\;
],
[
@@ -879,7 +820,7 @@ ko izmanto lietotne.
],
[
+ Ja ievades teksts ir tukšs, parāda 1. paziņojumu, beidz apstrādi;
+ Izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01, tiek iegūts jautājuma objekts no sniegtā
+ Izmantojot procedūru #link(<PR01>)[PR01] (skat. tabulu @tbl:PR01), tiek iegūts jautājuma objekts no sniegtā
pirmteksta;
+ Ja tiek izvadīta kļūda, parāda 1. paziņojumu ar atbilstošu kļūdas informāciju,
beidz apstrādi;
@@ -931,7 +872,7 @@ ko izmanto lietotne.
+ Datums un laiks -- #datetime\;
],
[
+ Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link(<PR02>)[PR02] #ref_pr02\;
+ Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link(<PR02>)[PR02] (skat. tabulu @tbl:PR02)\;
+ Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz apstrādi;
+ Izveido vai atver failu padotā ceļā;
+ Ja atvēršana vai izveidošana neizdevās, parāda 1. paziņojumu;
@@ -941,7 +882,7 @@ ko izmanto lietotne.
Fails tiks atjaunots failu sistēmā.
Saskarnē pazūd indikators, ka atmiņas kartīšu fails tika izmainīts.
+ Fails ar kartītes informāciju, kas atbilst datu formātam #link(<DF06>)[DF06] #ref_df06\;
+ Fails ar kartītes informāciju, kas atbilst datu formātam #link(<DF06>)[DF06] (skat. tabulu @tbl:DF06)\;
],
[
+ Neizdevās atvērt vai izveidot atmiņas kartīšu failu;
@@ -952,14 +893,12 @@ ko izmanto lietotne.
=== Mācīšanās modulis
#indent-par([
Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes
funkcionalitāti, atbilstoši atmiņas kartītes tipam. Šī moduļa funkcijas ir
izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu
glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datu plūsmas ir
attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu).
Moduļa funkcijas tiek definētas tabulās 2.22.-2.26.
])
Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes
funkcionalitāti, atbilstoši atmiņas kartītes tipam. Šī moduļa funkcijas ir
izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu
glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datu plūsmas ir
attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu).
Moduļa funkcijas tiek definētas tabulās @tbl:MA01\-@tbl:MA05.
#figure(
caption: "Mācīšanās moduļa 2.līmeņa datu plūsmas diagramma",
@@ -1106,15 +1045,13 @@ ko izmanto lietotne.
=== Konfigurācijas modulis
#indent-par([
Konfigurācijas modulis nodrošina parametru apstrādi, ko var personalizēt
saistībā ar mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir
izmantotas konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un
tiek izmantotas risinājuma funkcionalitātei piemīt konfigurējamas
vērtības. Ar funkcijām saistītas datu plūsmas ir attēlotas moduļa 2. līmeņa
DPD (skat. @fig:kfdpd2 attēlu). Moduļa funkcijas tiek definētas tabulās
2.27.-2.29.
])
Konfigurācijas modulis nodrošina parametru apstrādi, ko var personalizēt
saistībā ar mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir
izmantotas konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un
tiek izmantotas risinājuma funkcionalitātei piemīt konfigurējamas
vērtības. Ar funkcijām saistītas datu plūsmas ir attēlotas moduļa 2. līmeņa
DPD (skat. @fig:kfdpd2 attēlu). Moduļa funkcijas tiek definētas tabulās
@tbl:KF01\-@tbl:KF03.
#figure(
caption: "Konfigurācijas moduļa 2.līmeņa datu plūsmas diagramma",
@@ -1222,11 +1159,9 @@ Pirmkodam jābūt izstrādātam ar sekojošiem nosacījumiem:
==== Pārnesamība
#indent-par([
Uz pārnesamību risinājumam ir sekojoša prasība: kartīšu failiem ir jābūt pārnesamiem
pārkopējot visu direktoriju uz citu mašīnu. Nosacījums saglabā atgriezenisko savietojamību
vienas galvenās versijas ietvaros.
])
Uz pārnesamību risinājumam ir sekojoša prasība: kartīšu failiem ir jābūt pārnesamiem
pārkopējot visu direktoriju uz citu mašīnu. Nosacījums saglabā atgriezenisko savietojamību
vienas galvenās versijas ietvaros.
==== Drošība
@@ -1241,15 +1176,13 @@ Uz drošību risinājumam ir sekojošas prasības:
== Daļējs funkciju projektējums
#indent-par([
Apstrādājot jautājumu tekstu, tas tiek sadalīts tekstvienībās.
Tekstvienībai piemīt saturs, kas ir viens vai vairāki simboli. Tekstvienību
sarakstu ir vieglāk pārveidot jautājumu sarakstu parsēšanās procesā. Dažas
tekstvienības nesatur neko, bet ir izmantotas, lai atvieglotu parsēšanu.
Lielākā daļa no tekstvienībām satur vienu vai divus simbolus, kas veido
jautājumu struktūru un norāda jautājumu veidu. saturs ir aprakstīts tabulā
(skat. tabulu @tbl:token-table).
])
Apstrādājot jautājumu tekstu, tas tiek sadalīts tekstvienībās.
Tekstvienībai piemīt saturs, kas ir viens vai vairāki simboli. Tekstvienību
sarakstu ir vieglāk pārveidot jautājumu sarakstu parsēšanās procesā. Dažas
tekstvienības nesatur neko, bet ir izmantotas, lai atvieglotu parsēšanu.
Lielākā daļa no tekstvienībām satur vienu vai divus simbolus, kas veido
jautājumu struktūru un norāda jautājumu veidu. saturs ir aprakstīts tabulā
(skat. tabulu @tbl:token-table).
Leksiskā analīzes process pieņem simbolu virkni un veido tekstvienību sarakstu
no tās. Procesa laikā tiek uzturēts un papildināts simbolu buferis, no kā tiek