Академический Документы
Профессиональный Документы
Культура Документы
Синтаксис и семантика
Используя грамматику для арифметических выражений:
<E> :: = <E> + <T> | <E> – <T> | <T>
<T> :: = <T> * <F> | <T> / <F> | <F>
<F> :: = number | name | (<E>)
где <E> — выражение, <T> — терм, <F> — фактор,
изобразить дерево разбора для следующих арифметических
выражений:
1) 2 + 3
2) (2 + 3)
3) 2 + 3 * 5
4) (2 + 3) * 5
5) 2 + (3 * 5)
2
Грамматика языка программирования в BNF:
<SL> :: = <S> | <S> ; <SL>
<var> ::= a | b | c | x | y | z
<const> ::= 0 | 1 | 2
3
Создать дерево разбора для каждой из конструкций
1.while a = 1 do x:= y + 1
2.begin y:= a + b end
3.if a = 0 then if b <> 1 then x:= y + 1; z := a else x:= y – 1
4
Переписать два правила в BNF как одно правило в ЕBNF
1.<SL> :: = <S> | <S> ; <SL>
2.<expr> :: = <expr> + <var> | <expr> – <var>
3.<S> :: = if <в_отн> then <S> | if <в_отн> then <S> else <S>
5
Таблица операций языка Паскаль имеет следующий
вид:
6
Используя команды виртуальной машины, дайте
операционное семантическое определение для
цикла for-to языка Паскаль
for i := first to last do…
i := first
loop: if i > last goto out
…
...
i := i + 1
goto loop
out:
7
Вычислить слабейшее предусловие для оператора
присваивания и постусловия.
Дано:
оператор присваивания: a := 2 * (b – 1) – 1
постусловие: {a > 0}
Дано:
оператор присваивания: b := (c + 10) / 3
постусловие: {b > 6}
Дано:
оператор присваивания: a := a + 2 * b – 1
постусловие: {a > 1}
Дано:
оператор присваивания: x := 2 * y + x – 1
постусловие: {x > 11}
8
Вычислить слабейшее предусловие для
последовательности операторов присваивания и
ее постусловия.
Дано:
оператор присваивания: a := 2 * b + 1
оператор присваивания: b := a – 3
постусловие: {b < 0}
Дано:
оператор присваивания: a := 3 * (2 * b + a)
оператор присваивания: b := 2 * a – 1
постусловие: {b > 5}
9
Доказать, что следующая программа корректна:
{y = Vy and x = Vx}
temp = x;
x = y;
y = temp;
{x = Vy and y = Vx}
10
СПАСИБО ЗА ВНИМАНИЕ
11