Один шаг за раз.
Не серьезно, начните с выражений и операторов, переходите к операторам, затем к функциям / классам и т. Д. Сохраните список того, для чего используется пунктуация.
Параллельно определить синтаксис для ссылки на переменные, массивы, хэши, числовые литералы, строковые литералы, другие встроенные литералы. Также параллельно определите вашу модель именования данных и правила области видимости.
Чтобы проверить, имеет ли смысл грамматика, сфокусируйтесь на уровне (литерал / переменная, оператор, выражение, оператор, функция и т. Д.) И убедитесь, что знаки препинания и маркеры с другими уровнями, перемеженные или добавленные / добавленные, не вызовут двусмысленности.
Наконец, запишите все это в EBNF и запустите через ANTLR или аналогичный.
Также лучше не изобретать велосипед. Обычно я начинаю с выбора последовательностей для начала и окончания блоков и функций операторов и математических операторов, которые обычно являются в основном C-подобными, ECMAScript-подобными, Basic-подобными, основанными на списке команд или основанными на XML. Это очень помогает, потому что это то, с чем люди привыкли работать.
Конечно, вы должны придумать довольно вескую причину, чтобы не отказываться от написания нового языка и просто придерживаться C, ECMAScript или Basic, которые хорошо протестированы и широко используются.
Я часто начинал определять новый язык только для того, чтобы найти кого-то, кто уже реализовал функцию где-то на существующем языке.
Если ваша цель - скорость разработки для какого-либо конкретного проекта, вам лучше использовать прототипы в Python, Lua или SpiderMonkey, если вы хотите быстро начать работу и хотите сократить количество набираемых текстов, необходимое для большинство скомпилированных языков.