Слайд 7Лексический анализатор – это часть компилятора, которая читает литеры программы
на исходном языке и строит из них слова (лексемы) исходного
языка.
Лексема (лексическая единица языка) – это структурная единица языка, которая состоит из элементарных символов языка и не содержит в своем составе других структурных единиц языка.
Результатом работы лексического анализатора является перечень всех найденных в тексте исходной программы лексем. Этот перечень представляется в виде таблицы, называемой таблицей лексем
Слайд 12 Входной язык задан с помощью следующей КС-грамматики:
G({prog, end., if,
then, else, endif, begin, end, while, do, and, or, not,
=, <, >, (, ), -, +, a, ;, :=},
{S, L, O, B, C, K, D, H, E, T}, P,S))
с правилами Р:
S → prog L end.
L → O | L ; O | L;
O → if B then O else O endif | if B then O endif | begin L end |
do O while (B) | a := E
B → B or C | C
C→ C and D | D
D → E < E | E > E | E = E | (B) | not (B)
E → E – F | E + F | E * F | E / F |E
F → (E) | a
Слайд 13 Класс КС-языков допускает распознавание с помощью недетерминированного
конечного автомата со
стековой (или магазинной) памятью – МП – автомата.
МП-автоматом выполняется алгоритм
«сдвиг-свертка» для
грамматики операторного предшествования. Для моделирования его
работы необходима входная цепочка символов и стек, в котором автомат
может обращаться не только к самому верхнему символу,
но и к некоторой цепочке символов на вершине стека.
Слайд 14Множество крайних левых и крайних правых символов
В курсовом проекте КС-грамматика
является грамматикой операторного предшествования. Для построения анализатора на основе этой
грамматики, необходимо построить матрицу операторного предшествования. Для этого на первом шаге нужно получить множество крайних левых и крайних правых символов из правил грамматики G.