Что необходимо решить для того, чтобы создать собственный язык программирования?
Можно выделить множество аспектов, но в общем случае нужно определить синтаксис и семантику языка. Синтаксис определяет, как записываются программы, а семантика – что они означают и как выполняются. Эти два аспекта взаимосвязаны: синтаксис задает форму, а семантика наполняет её содержанием. Для этого необходимо понять, какие задачи должен выполнять язык и как это можно выразить.
Для упрощения мы будем проектировать язык, который реализует несколько базовых конструкций: сложение, вычитание, умножение и деление целых чисел, проверку на равенство, присваивание переменных, оператор if с ветками then и else, а также оператор print.
Теперь давайте рассмотрим семантику нашего языка. Конечно, можно было бы разработать строгое определение семантики, как это сделано, например, в язык Standard ML, но для простоты в нашем случае мы будем использовать более общее и упрощенное определение. Для понимания семантики мы будем опираться на книгу «Основы языков программирования» [1], которая поможет нам лучше понять, как работает семантика в языках программирования.
Первое, что нужно рассмотреть, это смысл вычислений.
Существует множество типов семантики для вычислений, такие как операционная [1] семантика и денотационная [1] семантика. Однако в нашем случае мы не будем углубляться в подробности этих подходов, а сосредоточимся на том, что означают базовые команды.
Начнем с вычислительных выражений. Мы будем реализовывать операции сложения (+), вычитания (-), умножения (*) и деления (/). Сравнение будет ограничено проверкой на равенство (==), которая проверяет, равны ли значения слева и справа.