Давайте создадим компилятор! :: Креншоу Джек
Страница:
195 из 382
Последняя вещь: измените процедуру Init для очистки массива как показано ниже:
{–}
{ Initialize }
procedure Init;
var i: integer;
begin
for i := 1 to MaxEntry do begin
ST[i]:= '';
SType[i] := ' ';
end;
GetChar;
Scan;
end;
{–}
Это должно работать. Испытайте ее и проверьте, что вы действительно можете использовать многосимвольные имена переменных.
СНОВА ОПЕРАТОРЫ ОТНОШЕНИЙ
У нас осталось последнее односимвольное ограничение – ограничение операторов отношений. Некоторые из операторов отношений действительно состоят из одиночных символов, но другие требуют двух. Это '<=' и '>='. Я также предпочитаю Паскалевское '<>' для «не равно» вместо '#'.
Как вы помните, в главе 7 я указал, что стандартный способ работы с операторами отношений – включить их в список ключевых слов и позволить лексическому анализатору отыскивать их. Но, опять, это требует выполнение полного анализа выражения, тогда как до этого мы у нас была возможность ограничить использование сканера началом утверждения.
Я упомянул тогда, что мы все же можем избежать неприятностей с этим, так как многосимвольных операторов отношений немного и они ограничены в применении. Было бы легко обрабатывать их просто как специальные случаи и поддерживать их специальным способом.
Требуемые изменения влияют только на подпрограммы генерации кода и процедуры Relation и ее друзей.
|< Пред. 193 194 195 196 197 След. >|