Приложение C. Описание на стандартните модули
115
*
flags: байт, в който всеки бит има специфично предназначение. TokenSearch
променя съдържанието само на бит 0. (Всички останали битове остават
непроменени.):
°
бит 0 - съдържанието му при активирането на TokenSearch е без значение.
Ако TokenSearch е достигнала края на буфера, този бит се вдига в
единица. Например анализира се BEGIN. След неговото разпознаване бит
0 ще бъде 1, ако BEGIN се намира на края на буфера, и 0, ако BEGIN не
е бил в края на буфера;
°
бит 1 - този бит указва разпознаването на ключовите думи от клас A или
B да бъде независимо от това дали са написани с малки или главни букви
на латиница. В такъв случай таблицата от ключови думи трябва да бъде
дадена само с главни букви от латиницата;
°
 бит 2 - този бит е аналогичен на бит 1, но действието му е за буквите
от кирилицата;
°
 бит 3 - ако е 0, името на разпознатата лексема от клас A или B ще бъде
записано (в IdName^) така, както се намира в текста. Ако е 1, името се
записва след предварително превръщане на всички букви от латиницата
в главни или малки (в какви точно указва бит 5);
°
 бит 4 - този бит е аналогичен на бит 3, но действието му е за буквите
от кирилицата;
°
 бит 5 - указва към какви трябва да бъдат превърнати буквите, участващи
в името на дума от клас A или B (виж битове 3 и 4). Ако бит 5 = 1,
превръщането се извършва в малки букви, ако е 0 - в главни;
°
 бит 6 - не се използва, но стойността му трябва да е 0;
°
 бит 7 - указва дали за всички символи е зададена принадлежността им
към символни класове или това се отнася само за първите 128 символа
(7 битов ASCII код). Ако бит 7 = 1, то таблицата за принадлежност на
символите е с големина 128 байта и се използва 7 битов ASCII код, т.е.
предполага се, че всички символи с код по-голям от 128 не принадлежат
към нито един от класовете. Ако бит 7 = 0, използва се 8 битов ASCII
код и таблицата за принадлежност е с големина 256 байта;
*
buffer: указател към буфера на входния поток. Ако за буфер се използва
низ (string), то указателят трябва да сочи към първият му елемент (а не
към нулевия). Не се променя от TokenSearch;
*
buffsz: размер на входния буфер в байтове. Не се променя от TokenSearch.
*
index: индекс на началния символ в буфера, от който ще се започне
сканирането. Променя се от TokenSearch и след нейното завършване е
индекса на елемента, до който е стигнало сканирането;
*
start: индекс на символ в буфера, от който започва текущо разпознатата
лексема. Стойността му е без значение при активиране на TokenSearch;
*
KeyWordNo: Ако лексемата е разпозната като ключова дума от клас A, B
или C, то това е номерът на ключовата дума в таблицата от ключови думи
за съответния клас (A, B, C);
*
Classes: указател към масив от 128 или 256 еднобайтови елемента (в
зависимост от използвания ASCII код: 7 или 8 битов - зависи от бит 7 на
flags). Елемент с индекс N от този масив отговаря на символ с ASCII код N.
Битовете от съответния байт указват принадлежност (1) или
непринадлежност (0) към съответния клас: бит 0 за клас D, 1 - C, 2 - E, 3
- A, 4 - B, 5 - A
1
, 6 - B
1
, 7 - C
1
. Например стойност 40
10
 = 28
16
 = 00101000
2
<<  <  GO  >  >>

Вернуться к началу сайта