Синтаксический разбор строк и конечные автоматы
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: новшество, реферат данные
| Добавил(а) на сайт: Chkalov.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Ниже приводится текст функции ParseTag и вспомогательной функции GetSubString. У функции ParseTag есть четыре параметра: строка, содержащая тэг, заключенный в '<' и '>', строка, в которой возвращается имя тэга, и объекты типа TStringList, содержащие имена и значения атрибутов соответственно. Если данному атрибуту не сопоставлено никакое значение, в списке значений имени атрибута соответствует пустая строка. В случае успешного выполнения функция возвращает значение 0, в противном случае – 1.
Автомат реализован в теле цикла функции ParseTag. Добавление нового элемента в список осуществляется в момент перехода из состояния ReadXXX в какое-либо другое состояние. Кроме этого в цикл добавлена проверка ошибок синтаксиса, например, двух символов '=', следующих подряд. После завершения цикла мы анализируем состояния автомата. Если автомат находится в одном из состояний ReadXXX, происходит добавление последнего элемента в соответствующий список. Если автомат не находится ни в одном из допускающих состояний, функция возвращает сообщение о синтаксической ошибке.
function GetSubString(const S : String; Start, Stop : Integer): String; begin SetLength(Result, Stop-Start); Move(S[Start], Result[1], Stop-Start); end; function ParseTag(const Tag : String; var TagName : String; Attrs, Values : TStringList): Integer; type // Возможные состояния TState = (ReadTag, WaitAttr, WaitAttrOrEq, ReadAttr, WaitValue, ReadValue, ReadValueSQ, ReadValueDQ); const // Значения, возвращаемые функцией GetLink resOK = 0; // разбор прошел успешно resBadSyntax = -1; // синтаксическая ошибка // Набор возможных разделительных символов Delimeters = [' ', #9, #13, #10]; var State : TState; StartPos, i : Integer; begin Result := resOK; Рекомендуем скачать другие рефераты по теме: курсовик, контрольные 10 класс. Категории:Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата Поделитесь этой записью или добавьте в закладки |