Создание парсера простого языка (МОК) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая страница: «Из материалов по курсу «Методы построения компиляторов»: [[Создание синтаксического ан…»)
 
(Задания)
 
(не показаны 4 промежуточные версии этого же участника)
Строка 25: Строка 25:
 
*Реализовать узел дерева BinaryNode с конструктором BinaryNode(leftoperand,rightoperand,operation). Дополнить грамматику семантическими действиями, связанными с разбором выражений
 
*Реализовать узел дерева BinaryNode с конструктором BinaryNode(leftoperand,rightoperand,operation). Дополнить грамматику семантическими действиями, связанными с разбором выражений
 
*Реализовать парсер аналогичного языка в C-грамматике
 
*Реализовать парсер аналогичного языка в C-грамматике
 +
*Реализовать выражения вида x < 0. Для этого:
 +
# Сделать исправления в грамматике выражений (операции отношения - самые низкоприоритетные)
 +
# Сделать типы int и bool, описание переменных этих типов
 +
# Сделать метод определения типа у выражения
 +
*Реализовать условный оператор if и цикл while

Текущая версия на 11:11, 7 сентября 2014

Из материалов по курсу «Методы построения компиляторов»:

Создание синтаксического анализатора с помощью программы GPPG

Построение синтаксического дерева программы

Задания

  • Дополнить грамматику языка грамматикой выражений
expr : T
     | expr + T
     | expr - T
     ;

T    : F
     | T * F
     | T / F
     ;

F    : ident
     | INUM 
     | ( expr )
     ;
  • Реализовать узел дерева BinaryNode с конструктором BinaryNode(leftoperand,rightoperand,operation). Дополнить грамматику семантическими действиями, связанными с разбором выражений
  • Реализовать парсер аналогичного языка в C-грамматике
  • Реализовать выражения вида x < 0. Для этого:
  1. Сделать исправления в грамматике выражений (операции отношения - самые низкоприоритетные)
  2. Сделать типы int и bool, описание переменных этих типов
  3. Сделать метод определения типа у выражения
  • Реализовать условный оператор if и цикл while