Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2014, 13:17   #1
JavScr
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 39
По умолчанию интерпретатор для подмножества языка разметки гипертекста HTML

Подскажите, пожалуйста, исправить ошибку в программе. Данная программа должна проверять входную последовательность на корректность кода.
Вложения
Тип файла: rar программа.rar (263.6 Кб, 12 просмотров)
JavScr вне форума Ответить с цитированием
Старый 15.01.2014, 22:55   #2
JavScr
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 39
По умолчанию

есть код:
Код:
SymbolToStr: array [sHTML..s_b_tabl_td_en] of string = (
    'HTML', 'HEAD', 'TITLE', 'HEADLINE', 'BODY',
    'CONTENT', 'TABLE0', 'TR0', 'TR_0', 'TD0', 'ATTRIB',
    'eof', 'param', 'str', 'id', '=', '>',
    '<html>','</html>', '<head>','</head>', '<title>','</title>',
    '<body>', '</body>', '<table>', '</table>','<tr>', '</tr>',
    '<td>', 'op','</td>');

var
  stack: array [1..100] of Symbol;
  p_s: integer;

function StrToSymbol(value: string): Symbol;
begin
 for Result := sHTML to s_b_tabl_td_en do
  if SymbolToStr[Result] = value then Exit;

 raise Exception.Create('Ошибка в StrToSymbol: '+ value);
end;

function LexToSymbol(value: integer): Symbol;
const
  LtS: array[s_id..s_b_tabl_td_en] of Symbol = (
    s_id, s_param, s_str, s_html_st,
    s_html_en, s_h_st, s_h_en, s_t_st, s_t_en,
    s_b_st, s_b_en, s_b_tabl_st, s_b_tabl_en,
    s_b_tabl_tr_st, s_b_tabl_tr_en, s_b_tabl_td_st, s_op,
    s_b_tabl_td_en );
begin
 case value of
   s_id..s_b_tabl_td_en: Result := LtS[value];
   _eof: Result := s_eof;
   ord('>'): Result:=s_zak;
   ord('='): Result:=s_rav;
    else raise Exception.Create('LexToSymb '+ IntToStr(value));
 end;
end;
понятно, что ошибка в строке:
Код:
  s_id..s_b_tabl_td_en: Result := LtS[value];
подскажите, как правильно написать?
JavScr вне форума Ответить с цитированием
Старый 16.01.2014, 12:19   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я так понял тебе надо преобразовать Symbol в Integer сначала, это если ошибка действительно там.
Вероятно делфи не нравится что в value может содержаться число, превышающее диапазон Symbol.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.01.2014, 13:01   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
Integer(s_id)..Integer(s_b_tabl_td_en): Result := LtS[Symbol(value)];
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2014, 17:12   #5
JavScr
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 39
По умолчанию

как понять данные ошибки?
Изображения
Тип файла: jpg Безымянный (2).jpg (20.0 Кб, 128 просмотров)
Тип файла: jpg Безымянный (3).jpg (21.4 Кб, 127 просмотров)
JavScr вне форума Ответить с цитированием
Старый 16.01.2014, 17:37   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию


Access Violation в деталях
northener вне форума Ответить с цитированием
Старый 17.01.2014, 21:19   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Для Memo конструктор вызывался? Покажите код создания Мемо. Или это компонент на форме?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.01.2014, 21:28   #8
JavScr
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Для Memo конструктор вызывался? Покажите код создания Мемо. Или это компонент на форме?
в начале темы приложена сама программа
JavScr вне форума Ответить с цитированием
Старый 20.01.2014, 19:28   #9
JavScr
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 39
По умолчанию

никто не может помочь понять, в чем ошибка хотя бы?
JavScr вне форума Ответить с цитированием
Старый 20.01.2014, 19:40   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
в начале темы приложена сама программа
Очень интересно в чужих исходниках копаться. По поводу ошибки - очень похоже, что мемо не создано
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Курсовая "Компилятор для подмножества языка Паскаль"(За вознаграждение) User313 Фриланс 4 04.12.2013 11:11
Компилятор с подмножества языка ruby xz2raza Фриланс 0 08.05.2011 13:54
html проблема разметки world12_tk HTML и CSS 2 22.09.2010 20:27
Интерпретатор заданного языка DaNiemand Помощь студентам 2 07.09.2010 14:56
интерпретатор машинного языка Hellgrom Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2009 18:46