@alexsteadfast
I am noob

Почему правила не отрабатывают? где взять подробный материал?

Задача
1. Представить подгруппу языка в формах Бэкуса-Науэра.
2. Созданную грамматику ввести в файл и проверить правильность написания (выполняется в «Учебном компиляторе»).
3. Построить синтаксические выводы с целью проверки написанной грамматики. При необходимости (выявлены ошибки написания предложений языка) откорректировать грамматику и вновь пройти шаги 1,2.
4. Найти направляющие символы грамматики. Привести грамматику к виду LL(1).
5. Ввести действия в грамматику. Построить синтаксический анализатор.
6. Построить граф распознавания лексических единиц.
7. Написать несколько тестов на проектируемом языке программирования. Протестировать грамматику.

Базовый язык: С
Тип данных: int, float
Операторы: +, -, *, /, >=, !=
Операции: присвоить, if, while-do

моё решение: (общие описания конструкций, далее идут настройки в программе)
<programm> -> <main> nameFunction <function> ( <params> ) 
              { <varsIdentif> <prisvaivanie> <varsZnachenie> 
                <if> <uslovie> = <varsZnachenie>
                {
                <while> <uslovie> = <varsZnachenie> }
                <if> <uslovie> != <varsZnachenie>
                {
                <do> <uslovie> >= <varsZnachenie>
                } %
<main> -> <function> | %
<function> -> <params> { <varsIdentif> } %
<params> -> <int> | <float> %
<varsIdentif> -> <int> | <float> %
<varsZnachenie> -> string %
<int> -> int | %
<float> -> float | %
<prisvaivanie> -> <varsIdentif> = <varsZnachenie> %
<uslovie> -> string | %
<if> -> <uslovie> { <function> } %
<stringLists> -> <int> + <int> - <int> * <int> / <int> %
<while> -> <uslovie> { <stringLists> } %
<do> -> { <stringLists> } <uslovie> %


Всё работает, но не понятно как и почему и вообще правильно ли я понял суть задачи?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы