Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
02.05.2014
Размер:
2.21 Кб
Скачать
unit LexType; {!!! Зависит от входного языка !!!}

interface
{ Модуль, содержащий описание всех типов лексем }

type
{ Возможные типы лексем в программе }
TLexType =
(LEX_PROG, LEX_FIN, LEX_SEMI, LEX_IF, LEX_OPEN, LEX_CLOSE,
LEX_ELSE, LEX_BEGIN, LEX_END, LEX_WHILE, LEX_DO, LEX_VAR,
LEX_CONST, LEX_ASSIGN, LEX_OR, LEX_XOR, LEX_AND,
LEX_LT, LEX_GT, LEX_EQ, LEX_NEQ, LEX_NOT,
LEX_SUB, LEX_ADD, LEX_UMIN, LEX_START);

{ Функция получения строки наименования типа лексемы }
function LexTypeName(lexT: TLexType): string;
{ Функция получения текстовой информации о типе лексемы }
function LexTypeInfo(lexT: TLexType): string;

implementation

function LexTypeName(lexT: TLexType): string;
{ Функция получения строки наименования типа лексемы }
begin
case lexT of
LEX_OPEN: Result := 'Открывающая скобка';
LEX_CLOSE: Result := 'Закрывающая скобка';
LEX_ASSIGN: Result := 'Знак присвоения';
LEX_VAR: Result := 'Переменная';
LEX_CONST: Result := 'Константа';
LEX_SEMI: Result := 'Разделитель';
LEX_ADD,LEX_SUB,LEX_UMIN,LEX_GT,LEX_LT,LEX_EQ,
LEX_NEQ: Result := 'Знак операции';
else Result := 'Ключевое слово';
end;
end;

function LexTypeInfo(lexT: TLexType): string;
{ Функция получения текстовой информации о типе лексемы }
begin
case lexT of
LEX_PROG: Result := 'prog';
LEX_FIN: Result := 'end.';
LEX_SEMI: Result := ';';
LEX_IF: Result := 'if';
LEX_OPEN: Result := '(';
LEX_CLOSE: Result := ')';
LEX_ELSE: Result := 'else';
LEX_BEGIN: Result := 'begin';
LEX_END: Result := 'end';
LEX_WHILE: Result := 'while';
LEX_DO: Result := 'do';
LEX_VAR: Result := 'a';
LEX_CONST: Result := 'c';
LEX_ASSIGN: Result := ':=';
LEX_OR: Result := 'or';
LEX_XOR: Result := 'xor';
LEX_AND: Result := 'and';
LEX_LT: Result := '<';
LEX_GT: Result := '>';
LEX_EQ: Result := '=';
LEX_NEQ: Result := '<>';
LEX_NOT: Result := 'not';
LEX_ADD: Result := '+';
LEX_SUB,
LEX_UMIN: Result := '-';
else Result := '';
end;
end;

end.
Соседние файлы в папке Cursov