Транслятор с языка While в коды абстрактной машины. | MetodPro.ru

Реклама на сайте

Транслятор с языка While в коды абстрактной машины.


38) Транслятор с языка While в коды АМ
• Для трансляции определим три функции:
• CA: Aexp -> Code
• CB: Bexp -> Code
• CA: Stm -> Code
Трансляция арифметических и булевых выражений
• CA [[n]] = PUSH-n
• CA [[x]] = LOAD-x
• CA [[a1+a2]] = CA[[a2]] ++ CA[[a1]] ++ ADD
• CA [[a1*a2]]= CA [[a2]] ++ CA [[a1]] ++ MULT
• CA [[a1-a2]] = CA [[a2]] ++ CA [[a1]] ++ SUB
• CB [[true]] = TRUE
• CB [[false]] = FALSE
• CB [[a1=a2]] = CA [[a2]] ++ CA [[a1]] ++ EQ
• CB [[a1<=a2]] = CA [[a2]] ++ CA [[a1]] ++ LE
• CB [[not b]] = CB [[b]] ++ NOT
• CB [[b1 AND b2]] = CB [[b2]] ++ CB [[b1]] ++ AND
Трансляция команд
• CS [[x:=a]] = CA [[a]] ++ STORE-x
• CS [[skip]] = NOOP
• CS [[S1;S2]] = CS [[S1]] ++ CS [[S2]]
• CS [[if b then S1 else S2]] = CB [[b]] ++ BRUNCH(CS[[S1]], CS [[S2]])
• CS [[while b do S]] = LOOP (CB [[b]], CS [[S]])




Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем