Вот я решил написать пару слов о моих идеях.
Типы данных.
В нашем языке будет множество различных типов данных, которые условно можно разделить на записываемые непосредственно ввиде текста и создаваемые только командами языка
В первую группу входят числа, строки, ключи, массивы, исполняемые массивы.
Число - это самое обычное число, может быть записано в разных системах счисления.
Строка - последовательность символов начинающаяся и заканчивающаяся символом "
Для того, чтобы вставить в строку символ " надо написать ""
В строку могут входить символы пробела и переноса строки
Ключ - последовательность символов начинающаяся и заканчивающаяся символом \
Для того, чтобы вставить в ключ символ \ надо написать \\
В ключ не могут входить символы пробела и переноса строки
Пустой ключ существовать не будет.
Ключи предназначены для работы со словарями
Запись \+\ отличается от + тем, что если встречается \+\, то интерперетатор сразу кладёт в стек +, а не ищет команду в словаре и не выполняет её.
Массив - последовательность выражений начинающаяся с символа [ и заканчивающаяся символом ]
Между ними могут находиться любые выражения. Всё, что находится между квадратными скобками сначала выполняется, а потом уже создаётся массив.
В массиве могут содержаться элементы любого типа, в том числе и типа массив
Примеры:
[ 1 5 3 465 ]
[ "hello world" "
" ]
[ [ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ] ]
Для доступа к элементам массива используются специальные команды.
Исполняемый массив - последовательность выражений начинающаяся с символа { и заканчивающаяся символом }
Между ними могут находиться любые выражения. Всё, что находится между фигурными скобками не выполняется на этапе создания массива.
Для выполнения массива используются специальные команды.
На самом деле исполняемый массив - это конструкция подобная begin .. end в паскале.
Во вторую группу входят словари, стеки, файлы и т.д.
Я рассмотрю словари и стеки.
Словарь-это набор пар ключ-объект.
Когда программа встречает какое-либо выражение, то она сначала просматривает весь словарь и ищет его определение.
Если определение найдено, то если под данным ключом хранится испоняемый массив, то он выполняется, иначе в стек кладётся
соответсвующее выражение.
Стек-массив, у которого можно работать с верхними элементами (удалять и добавлять)
В языке будет несколько стеков:
стек данных-стек, где хранятся все объекты
запись
3 4 +
кладёт свои данные на вершину стека данных.
стек словарей-стек, где хранятся все словари.
То есть определений функции + может быть несколько: в стандартном словаре и в новом словаре, но программа выберет определение из самого верхнего
словаря в стеке, таким образом можно переопределить функцию +.
Алгоритмические структуры.
В каждом языке программирования есть структуры типа if .. then .. else .. , for .. ,while .. и тому подобное.
Наш язык не будет исключением.
вот пример условия
a 2 > { "a > b" message } if
это эквивалентно
if a>b then message("a > b")
Это пока всё, что я хотел рассказать!