Обчислення иразів у програмуванні, Детальна інформація
Обчислення иразів у програмуванні
lx.stl := ops; lx.sig := tempc; tempc := getc
end
else
if tempc in Bpar then
begin
lx.stl := par; lx.prt := tempc; tempc := getc
end
else
if tempc = finch then
getlx := false
else
begin
lx.stl := err; lx.wrlx := tempc; tempc := getc
end
end;
Функція isfn перевірки, чи представлено ім'я lx.name в масиві Namf, залишається для самостійної розробки.
9.4. Допоміжні підпрограми
Алгоритм процедури getbglx дуже простий: поки поточний символ не потрапив у множину Blex перших символів лексем, викликається функція getc для одержання нового поточного символу. Якщо при цьому вираз вичерпується, то наступним поточним вважається "фіктивний символ" finch.
function getbglx : char;
begin
while not ((tempc in Blex )or( tempc = finch ) ) do tempc := getc;
getbglx := tempc
end;
Функція getcon задає читання символів сталої з образу та побудову за ними відповідного значення типу real. Нехай синтаксис сталої задається метавиразом { } [ '.' { } ]. Розглянемо побудову значення типу real за сталою. Цифри до крапки задають цілу частину числа. Значення чергової цифри додається до результату обробки попередніх цифр, помноженого на 10. Перед обробкою першої цифри результатом є 0. Крапка пропускається, а значення цифр праворуч від неї множаться на відповідні від'ємні степені числа 10 і додаються до числа:
function getcon : real;
var v, d : real;
begin
v := 0; d := 1;
repeat
v := v*10 + ord(tempc) - ord('0'); tempc := getc;
end
else
if tempc in Bpar then
begin
lx.stl := par; lx.prt := tempc; tempc := getc
end
else
if tempc = finch then
getlx := false
else
begin
lx.stl := err; lx.wrlx := tempc; tempc := getc
end
end;
Функція isfn перевірки, чи представлено ім'я lx.name в масиві Namf, залишається для самостійної розробки.
9.4. Допоміжні підпрограми
Алгоритм процедури getbglx дуже простий: поки поточний символ не потрапив у множину Blex перших символів лексем, викликається функція getc для одержання нового поточного символу. Якщо при цьому вираз вичерпується, то наступним поточним вважається "фіктивний символ" finch.
function getbglx : char;
begin
while not ((tempc in Blex )or( tempc = finch ) ) do tempc := getc;
getbglx := tempc
end;
Функція getcon задає читання символів сталої з образу та побудову за ними відповідного значення типу real. Нехай синтаксис сталої задається метавиразом
function getcon : real;
var v, d : real;
begin
v := 0; d := 1;
repeat
v := v*10 + ord(tempc) - ord('0'); tempc := getc;
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021