Обчислення иразів у програмуванні, Детальна інформація
Обчислення иразів у програмуванні
con nam ops par err
Подальша обробка лексеми залежить від її різновиду й визначається її першим символом. Нехай позначає цифру з діапазону '0'..'9', а – літеру з 'a'..'z'. Залежність різновиду від першого символу лексеми (за її наявності) подамо так:
Щоб добути знак операції чи дужку, досить узяти поточний символ.
Добування сталих та імен (елементів типу 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
Подальша обробка лексеми залежить від її різновиду й визначається її першим символом. Нехай
Щоб добути знак операції чи дужку, досить узяти поточний символ.
Добування сталих та імен (елементів типу real і st8) опишемо функціями відповідно getcon і getnam.
Побудуємо функції getcon і getnam так, щоб після виконання їх виклику поточним був символ, наступний за останнім символом добутої лексеми. У такому разі до обробки знаків операцій і дужок додамо указання переходу до наступного поточного символу tempc := getc. Імена, що не є іменами функцій із масиву Namf, будемо вважати помилковими лексемами. Якщо лексема подається змінною lx типу Tlx, то залежно від першого символу лексеми потрібно виконати такі дії:
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
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021