Блог программиста

Опытный программист не только делится этим самым опытом, но и сам изучает что-то новое в сфере программирования и ИТ в целом и рассказывает об этом посетителям сайта!

Синтаксические диаграммы для языка Cj

Это уже 3-ая редакция, видимо не последняя. Приходится править, не получается нарисовать сразу корректно.

Программа на языке Cj - это блок кода, состоящий из набора инструкций (назовём их statement). Строчки кода можно заключать в блоки в виде скобочек { }.

Как мы видим из диаграммы, блок кода может быть 2-х типов: основным, с него начинается программа, и обычным, заключённым в скобки { }. Вложенность бесконечна )).

В зависимости от типа блока кода, в нём применяются основные или обычные инструкции statement. Отличие лишь в том, что в обычном блоке кода нельзя описывать функции, а в основном можно (и нужно).

Operator - это обычный оператор: if, for, while и т.д., std_type - стандартные типы данных, expression - арифметическое выражение.

Нарисуем синтаксические диаграммы вызова и описания функции. Как их разделить? Запоминаем позицию и ищем символ ')'. Если после него идёт ';' - вызываем обработку вызова функции, если нет - проверяем на символ '{', если да, то это описание функции. Вызов еще функции достаточно прост.

А вот описание, конечно, посложнее. Оно состоит не только из описания параметров, но и тела самой функции.

Если переменная ещё не описана и появилась в программе, даже без указания типа, то описываем её, где бы она не появилась. В отличии от С++, это не является ошибкой. Возможно описание переменной совмещается с участием в арифметическом выражении.

Всего несколькими синтаксическими диаграммами мы смогли описать язык Cj. Теперь дело за малым - реализовать сам язык!


Отправить комментарий
Наш проект: язык Cj
Cj - язык программирования (C++ & Javascript)
Новый язык программирования, для разработки веб, мобайл, десктоп-приложений, игр... подробнее...

Хотите поддержать проект?

  • Оставляйте ссылки на наш сайт
  • Станьте спонсором проекта
подробнее...

Контакты
vk.com/sitev_ru
Skype: sitev.ru
E-mail: mike@sitev.ru
github.com/sitev

Рейтинг@Mail.ru

Besucherzahler
счетчик посещений