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

Читання лексем виразу
Тип документу: Реферат
Сторінок: 7
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 14.1
Скачувань: 1313
els\x0D65\x6669\x7420\x6D65\x6370\x6920\x206E\x7042\x7261\x7420\x6568\x0D6E\x6562\x6967\x0D6E\x786C\x732E\x6C74\x3A20\x203D\x6170\x3B72\x6C20\x2E78\x7270\x2074\x3D3A\x7420\x6D65\x6370\x203B\x6574\x706D\x2063\x3D3A\x6720\x7465\x0D63\x6E65\x0D64\x6C65\x6573\x690D\x2066\x6574\x706D\x2063\x203D\x6966\x636E\x2068\x6874\x6E65\x670D\x7465\x786C\x3A20\x203D\x6166\x736C\x0D65\x6C65\x6573\x620D\x6765\x6E69\x6C0D\x2E78\x7473\x206C\x3D3A\x6520\x7272\x203B\x786C\x772E\x6C72\x2078\x3D3A\x7420\x6D65\x6370\x203B\x6574\x706D\x2063\x3D3A\x6720\x7465\x0D63\x6E65\x0D64\x6E65\x3B64

Функція isfn перевірки, чи представлено ім'я lx.name в масиві Namf, залишається для самостійної розробки.

4. Допоміжні підпрограми

Алгоритм процедури getbglx дуже простий: поки поточний символ не потрапив у множину Blex перших символів лексем, викликається функція getc для одержання нового поточного символу. Якщо при цьому вираз вичерпується, то наступним поточним вважається "фіктивний символ" finch.

function getbglx : char;

begin

while not ((tempc in Blex )or( tempc = finch ) ) do tempc := getc;

\x017E

6

6

\x245B\x5C00$\x1C00= 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;

until not (tempc in Bcon);

if tempc = '.' then tempc := getc;

while tempc in Bcon do

begin

d := d/10; v := v + ( ord(tempc) - ord('0') )*d; tempc := getc

end;

{сталу прочитано; поточним є символ, наступний за її останнім}

getcon := v

end;

Запишемо функцію getcon у інший спосіб, який реально застосовується в побудові підпрограм лексичного аналізу в системах програмування. Обробка чергового символу залежить від того, чи є він цифрою в цілій або дробовій частині сталої, крапкою або символом після сталої.

Додамо змінну cp типу Tcp=(ip, fp, out), елементи якого позначають місця поточного символу tempc в цілій (ip) та дробовій (fp) частині або за межами сталої (out). Спочатку cp=ip. Залежність її наступного значення від попереднього та від поточного символу tc подамо таблицею, в якій стрілка ліворуч відмічає початкове значення ip (табл.20.1).

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