Читання лексем виразу, Детальна інформація
Читання лексем виразу
function getlx ( var lx : Tlx ) : boolean;
Implementation
кількість імен функцій}
var Namf : array [ 1..fnum ] of st8;
Bcon, Bnam, Bops, Bpar, Blex : set of char;
procedure glxinit; … end;
… { Допоміжні для getlx означення}
function getlx; … end;
Begin
glxinit
End.
Одразу наведемо процедуру ініціалізації:
procedure glxinit;
begin
Bcon := [ '0'..'9' ]; Bnam := [ 'a'..'z' ];
Bops := [ '+', '*', '-', '/' ]; Bpar := [ '(', ')' ];
Blex := Bcon + Bnam + Bops + Bpar;
Namf[1] := 'sin'; Namf[2] := 'cos'
end;
3. Функція getlx
Будемо вважати, що вираз записано в тексті, між його лексемами можуть бути пропуски в довільній кількості, і що вираз може займати кілька рядків тексту. Інших уточнень поки що не робимо. Текст читається по одному символу, і нехай
читання й повернення наступного символу тексту задає функція getc.
Нехай останній прочитаний символ тексту, який ми називаємо поточним, зберігається в глобальній у модулі змінній tempc. Вона ініціалізується символом ' ' (пропуск), тобто перед виразом штучно додається пропуск.
Добування лексеми починається з пошуку її першого символу у вхідній послідовності. Нехай
пошук першого символу описується функцією getbglx.
З її виклику повертається або перший символ лексеми, або, коли лексеми вичерпано, символьна стала chr(0), яку можна вважати "фіктивним символом". Іменування цієї сталої ім'ям finch додамо до означень модуля.
'+', '*', '-', '/' '(', ')' інший символ
con nam ops par err
Подальша обробка лексеми залежить від її різновиду й визначається її першим символом. Нехай позначає цифру з діапазону '0'..'9', а – літеру з 'a'..'z'. Залежність різновиду від першого символу лексеми (за її наявності) подамо так:
Implementation
кількість імен функцій}
var Namf : array [ 1..fnum ] of st8;
Bcon, Bnam, Bops, Bpar, Blex : set of char;
procedure glxinit; … end;
… { Допоміжні для getlx означення}
function getlx; … end;
Begin
glxinit
End.
Одразу наведемо процедуру ініціалізації:
procedure glxinit;
begin
Bcon := [ '0'..'9' ]; Bnam := [ 'a'..'z' ];
Bops := [ '+', '*', '-', '/' ]; Bpar := [ '(', ')' ];
Blex := Bcon + Bnam + Bops + Bpar;
Namf[1] := 'sin'; Namf[2] := 'cos'
end;
3. Функція getlx
Будемо вважати, що вираз записано в тексті, між його лексемами можуть бути пропуски в довільній кількості, і що вираз може займати кілька рядків тексту. Інших уточнень поки що не робимо. Текст читається по одному символу, і нехай
читання й повернення наступного символу тексту задає функція getc.
Нехай останній прочитаний символ тексту, який ми називаємо поточним, зберігається в глобальній у модулі змінній tempc. Вона ініціалізується символом ' ' (пропуск), тобто перед виразом штучно додається пропуск.
Добування лексеми починається з пошуку її першого символу у вхідній послідовності. Нехай
пошук першого символу описується функцією getbglx.
З її виклику повертається або перший символ лексеми, або, коли лексеми вичерпано, символьна стала chr(0), яку можна вважати "фіктивним символом". Іменування цієї сталої ім'ям finch додамо до означень модуля.
con nam ops par err
Подальша обробка лексеми залежить від її різновиду й визначається її першим символом. Нехай
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021