Pull to refresh
26
0
Павел @RoPi0n

Software engineer, Senior Mash developer :)

Send message

Если использовать exit внутри циклов, то это черевато мусором в стеке.

Ну, тут уже как пойдет. Посмотрим что получится)

Транслятор преобразует код в промежуточное представление (ассемблер-подобный листинг) и затем собирает уже его в абстрактный байткод для написанной ВМ. Исходя из вашего текста, делаю вывод о том, что вам не почти все ясно, а почти ничего не ясно. Рекомендую пост к прочтению повторно.
Динамическое построение классов реализовано через структурные таблицы и генератор конструктора и деструктора структуры классов.


На чем написано? Серьезно? Вам сложно клацнуть по ссылке на репозиторий?

Чтож, пишу в который раз для внимательного талантливого кодера domix32. Оператор $ используется лишь для сокращения записи "this->". В языке нет "$var" переменных. Ваш комментарий вообще не связан с проектом и не несет никакой смысловой нагрузки. Не следует отправлять в непонятный раздел памяти информацию сразу после её прочтения. На хабре предпочтительна конструктивная критика.

$ — сокращение this->
Они стоят только в классовых методах, как вы можете посмотреть.
Разве pascal & python плохие языки?)
Мне кажется, что Mash больше смахивает на Ruby.

Я решил сделать разделение на функции и процедуры, ведь это все же мой язык. Раз вам нет пользы до того, функция перед вами или процедура, то это ваше дело :)
Тут вопрос в том, как кому больше нравится.

Сайт не слишком давно поднят.
Ему приоритет особо не выделял, т.к. времени небыло. Пока ещё не заполнен как следует. Хочется все по красоте сделать.

Про звезду репозиторию забыли упомянуть :)

Спасибо. Это мой первый пост на Хабре.

Что есть, то есть :)

Ну да. Но я думаю, что это опасный для использования оператор. Для выхода из функции и возврата значения есть return.

Эээ, а чему тогда будет равна переменная, которая принимает возвращаемое значение? Случайному значению со стека?


Если ожидается значение от функции, а в функции оно в стек не ложится, то да. Либо значение с вершины стека, либо access violation.

Доводилось ли вам работать с неизвестным вам кодом? Мб с объемными библиотеками? Несмотря на гибкость языка, строгость должна присутствовать. proc & func реализованы исключительно для этого. Можно было и обойтись без них оставив например только func.

Отличие GCC от LLVM в том, что GCC компилирует C/C++ в нативный код, а LLVM может выполнять абстрактный биткод и во время выполнения компилировать его в машинный для оптимизации. Так что я считаю, что LLVM — это ВМ, подобно JVM, Parrot и прочим.

Считаю, что ЯП на английском языке будет выглядеть лучше.
Тут их и нет. Если палки в колеса себе не пихать)
Изначально целью проекта ставил реализовать все самому.
Есть Jet Brains, Excelsior — уже как минимум 2 ру компании, которые занимаются разработкой компиляторов.
Чтож, что есть — то есть)
Для некоторых ошибок реализованы уведомления.

Information

Rating
Does not participate
Registered
Activity