Здесь я предлагаю всем желающим поучаствовать в создании краткого синтаксиса к языку (то есть такого который для написания программы, синтаксис для чтения будет обсуждаться позже).
Итак общая структуры программы есть паскалевский юнит:
Система: Тип_системы
Внешние системы: Список_имен_внешних_систем_через_запятую
Точка входа: Имя_функции_для_запуска_системы_как_самостоятельной_программы
Конструктор: Имя_функции_ответственной_за_подготовку_системы_к_работе
Интернациональные описания:
Идентификатор_на_национальном_языке=Идентификатор_на_английском
Структура
Открытая часть
Список_и/или_описания_систем
Список_функций
Значение
Закрытая часть
Список_и/или_описания_систем
Список_функций
Значение
Реализация функций
Список_описаний_функций
Система закончена
На данный момент рассматривается только участок
Система: Тип_системы
Внешние системы: Список_имен_внешних_систем_через_запятую
Точка входа: Имя_функции_для_запуска_системы_как_самостоятельной_программы
Конструктор: Имя_функции_ответственной_за_подготовку_системы_к_работе
Интернациональные описания: Идентификатор_на_национальном_языке=Идентификатор_на_английском
так как за него будет ответственна отдельная функция. Это связано с логическим разделением модуля на секции и наличием в данной секции описания Внешние системы. Описание Внешние системы предназначено для подключения модулей с системами в других файлах (позже там же будут подключаться дллки, это пока очень далеко и рано). Этот элемент описания системы делает вызов функции рекурсивной (то есть для всех описанных внешних систем нужно делать разбор раньше, чем разбор основного исходника). Собственно говоря это же и самая сложная секция во-первых, у меня еще нет опыта разбора секций вообще, во-вторых у меня нет опыта подключения внешних модулей (первая Валентина этого не успела), в-третьих, тут нужна рекурсия, в-четвертых, все остальные секции делаются аналогичным образом.
Задача на сейчас придумать краткую запись. Ну не писать Система:. Это утомительно, нужен краткий синтаксис, но без сокращений, так как они сильно уродуют язык. Ну например, можно приветствовать использование спецсимволов. Поскольку описание секций явление редкое, значит допускаются символы, получаемые через шифт и весьма желательно через шифт в русской раскладке.
Ну например, вместо
Система: Список,
можно писать
/ Список /.
Знак слешика лежит на цифровой клаве без шифта.
Синтаксис сразу будет формироваться в файле описания диалекта. Подробней: Аспекты внутреннего устройства
ЗЫ. Тут вот сразу нужно быть внимательным. Поскольку если сделать таким образом, то нельзя будет использовать комментарий в стиле // (два слешика) так как слешик и так будет добавляться в токены (последовательности символов, которые в сплошном потоке должны рассматриваться как независимые элементы). Впрочем, обычно деление итак всегда слешик... Так что прощай однострочные комментарии в стиле // .
Вместо слешей можно использовать скобки, но только не круглые требуют английской раскладки, а круглые не смотрятся...
Еще один момент - так как за рассмотрение этого участка отвечает отдельная функция, символы можно перегружать смысловой нагрузкой (иной вопрос, как это будет восприниматься человеком) - интерпретатору пофиг, фактически разбор распадается на несколько независимых интерпретаций (но в один проход - я сторонник одного прохода). Поэтому например слешики в этой секции не рассматриваются как деление. Для данной секции деление вообще не существует .