Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа. / РЯП_Ксю / Other / tyap / Приложение С Спецификация программы.doc
Скачиваний:
15
Добавлен:
01.05.2014
Размер:
71.17 Кб
Скачать

Определение структур данных 'uTable.Pas'

Глобальные переменные, используемые при анализе

attrs: TStringStack; // Стек атрибутов

numvar: byte; // Номер переменной в таблице, если текущий символ - переменная

numconst: byte; // Номер константы в таблице, если текущий символ - константа

numtype: byte; // Номер типа в таблице, если текущий символ - тип

numlabel: byte; // Номер метки в таблице, если текущий символ - метка

numstr:byte; // Номер строки в таблице, если текущий символ - строка

number: longint; // Номер

curtab: byte; // Номер текущей таблицы

Структуры используемые при анализе:

Стек, элементы которого целые числа или строки из 4-х символов.

TStringStack = class(TStack) // Класс наследуемый от стандартного класса TStack

Empty: boolean; // Признак пустого стека

constructor Create; // Конструктор (инициализация)

function UpperStr: string; // Считывает верхний символ стека, без выталкивания (строка)

function Upperint: integer; // Считывает верхний символ стека, без выталкивания (целое)

function Popstr: string; // Выталкивает символ из стека (строку)

procedure Push(s: string); overload; // Помещает символ в стек (строку)

function Popint: integer; // Выталкивает символ из стека (целое)

procedure Push(s: integer); overload; // Помещает символ в стек (целое)

procedure Clear; // Очищает стек, без уничтожения.

end;

Остальные используемые методы являются наследуемыми от класса TStack

Описание класса TStack

Элементами класса являются элементы типа Pointer.

Имеются стандартные методы push, pop, Create, Free.

procedure TfmTable.LoadTable (var sgF1, sgG1: TStringGrid; var mmRules1: TMemo; var Rules1: TStringList; CountOfRule1: word; FN: string);

Входной параметр: FN – имя файла

Выходные параметры: Таблица переходов, управляющая таблица, список правил, число правил

Загрузка управляющей таблицы.

procedure TfmTable.ChangeTables(n: byte); // загрузить соответствующую управляющую таблицу

//n=0 основную

//n=1 оператор

//n=2 выражение

function FindCol(var sg: TStringGrid; lex: string): byte;

Поиск элемента lex в заголовках столбцов в таблице sg

выходной параметр – номер столбца

function FindRow(var sg: TStringGrid; slex: string): byte;

Поиск элемента slex в заголовках строк в таблице sg

выходной параметр – номер строки

function GetLex(s: string; var begi: integer): string;

Считывание очередной лексемы с входного потока.

Входные параметры: s – входной поток лексем, begi – индекс, с которого начинается считывание

Выходные параметры begi – индекс, которым заканчивается считывание, лексема.

Алгоритм

Считывается лексема, пока не разделитель.

Если встречается символ переключения грамматики, то происходит переключение грамматики, запуск анализа для грамматики, в случае успешного анализа, происходит обратное переключение на грамматику.

function TfmTable.Analys(s: string; var i: integer): boolean;

Анализ входного потока

Входные параметры s – входной поток лексем i- индекс с которого начинается анализ.

Выходные параметры, i- индекс которым заканчивается анализ; результат анализа. (true, false)

Алгоритм:

Алгоритм приведен на диаграмме работы синтаксического анализа.