Читання лексем виразу, Детальна інформація

Читання лексем виразу
Тип документу: Реферат
Сторінок: 7
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 14.1
Скачувань: 1152
Щоб добути знак операції чи дужку, досить узяти поточний символ.

Добування сталих та імен (елементів типу real і st8) опишемо функціями відповідно getcon і getnam.

Побудуємо функції getcon і getnam так, щоб після виконання їх виклику поточним був символ, наступний за останнім символом добутої лексеми. У такому разі до обробки знаків операцій і дужок додамо указання переходу до наступного поточного символу tempc := getc. Імена, що не є іменами функцій із масиву Namf, будемо вважати помилковими лексемами. Якщо лексема подається змінною lx типу Tlx, то залежно від першого символу лексеми потрібно виконати такі дії:

\xF0AE lx.stl := con; lx.numb := getcon;

\xF0AE lx.name := getnam;

if lx.name представлено в Namf then lx.stl := nam

else lx.stl := err;

'+', '*', '-', '/' \xF0AE lx.stl := ops; lx.sig := tempc; tempc := getc;

'(', ')' \xF0AE lx.stl := par; lx.prt := tempc; tempc := getc;

інше \xF0AE lx.stl := err; lx.wrlx := tempc; tempc := getc;

В усіх випадках повертається значення true – ознака наявності лексеми. За символу finch повертається false. Наведена залежність є основою функції getlx:

function getlx ( var lx : Tlx ) : boolean;

begin

getlx := true; tempc := getbglx;

if tempc in Bcon then

begin

lx.stl := con; lx.numb := getcon

end

else

if tempc in Bnam then

begin

lx.name := getnam;

if isfn ( lx.name ) then lx.stl := nam

else lx.stl := err

end

else

if tempc in Bops then

begin

lx.stl := ops; lx.sig := tempc; tempc := getc

end

The online video editor trusted by teams to make professional video in minutes