Разработка компиляторов. Ишакова Е.Н. - 5 стр.

UptoLike

Составители: 

5
2 Основы теории разработки компиляторов
2.1 Описание синтаксиса языка программирования
Существуют три основных метода описания синтаксиса языков програм-
мирования: формальные грамматики, формы Бэкуса-Наура и диаграммы Вирта.
Формальные грамматики
Определение 2.1. Формальной грамматикой называется четверка вида:
),,,( SPVVG
N
T
= , (1.1)
где
V
N
- конечное множество нетерминальных символов грамматики
(обычно прописные латинские буквы);
V
T
- множество терминальных символов грамматики (обычно строч-
ные латинские буквы, цифры, и т.п.),
V
T
V
N
=
;
Рмножество правил вывода грамматики, являющееся конечным
подмножеством множества (
V
T
V
N
)
+
×
(V
T
V
N
)
*
; элемент
(
α
,
β
) множества Р называется правилом вывода и записывает-
ся в виде
α
β
(читается: «из цепочки
α
выводится цепочка
β
»);
S начальный символ грамматики, S V
N
.
Для записи правил вывода с одинаковыми левыми частями вида
n
β
α
β
α
β
α
,,,
21
K используется сокращенная форма записи
n
β
β
β
α
|||
21
K .
Пример 2.1. Опишем с помощью формальных грамматик синтаксис пас-
калеподобного модельного языка
М. Грамматика будет иметь правила вывода
вида:
P program D2 B.
D2 var D1
D1 D | D1; D
D I1: int | I1: bool
I1 I | I1, I
B begin S1 end
S1 S | S1; S
S begin S1 end | if E then S else S | while E do S | read(I) | write(E)
E E1 | E1=E1 | E1>E1 | E1<E1
El T | T+E1 | T-E1 | TEl
T F | F*T | F/T | FT
F I | N | L | ¬F | (E)
L true | false
     2 Основы теории разработки компиляторов

     2.1 Описание синтаксиса языка программирования

     Существуют три основных метода описания синтаксиса языков програм-
мирования: формальные грамматики, формы Бэкуса-Наура и диаграммы Вирта.
                                 Формальные грамматики
     Определение 2.1. Формальной грамматикой называется четверка вида:

           G = (VT , V N , P, S ) ,                                              (1.1)

     где VN - конечное множество нетерминальных символов грамматики
              (обычно прописные латинские буквы);
         VT - множество терминальных символов грамматики (обычно строч-
              ные латинские буквы, цифры, и т.п.), VT ∩VN =∅;
         Р – множество правил вывода грамматики, являющееся конечным
              подмножеством множества (VT∪ VN)+ × (VT∪ VN)*; элемент
              (α, β) множества Р называется правилом вывода и записывает-
              ся в виде α→β (читается: «из цепочки α выводится цепочка
              β»);
         S – начальный символ грамматики, S ∈VN.
     Для записи правил вывода с одинаковыми левыми частями вида
α → β1, α → β 2 , K ,α → β n используется сокращенная форма записи
α → β1 | β 2 | K | β n .
      Пример 2.1. Опишем с помощью формальных грамматик синтаксис пас-
калеподобного модельного языка М. Грамматика будет иметь правила вывода
вида:
     P → program D2 B.
     D2 → var D1
     D1 → D | D1; D
     D → I1: int | I1: bool
     I1 → I | I1, I
     B → begin S1 end
     S1 → S | S1; S
     S → begin S1 end | if E then S else S | while E do S | read(I) | write(E)
     E → E1 | E1=E1 | E1>E1 | E1