Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
02.05.2014
Размер:
2 Кб
Скачать
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