Вниз  Реализация "собственного" яп
- 22.04.2016 / 15:07
bek1996
  Пользователь

bek1996 
Сейчас: Offline
MoteX, Макс прав! Не слушай никого, vi@volk ка особенно, он тоже новичок! :)
- 22.04.2016 / 15:08
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Цитата aRiGaTo:
А вот сейчас обидно было.
+1

Цитата vl@volk:
Пусть делает это молча, никому не интересны его порождения идей
Наоборот, интересно следить за развитием событий, пусть чаще пишет. Да и направить в случае чего можно будет в обход граблям. :)
__________________
 let live
- 22.04.2016 / 16:22
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Цитата aRiGaTo:
MoteX, не слушай их. Велосипедный спорт - хороший способ узнать, как это всё работает изнутри. Главное заниматься им системно.
И самое главное - в своих проектах, а не где-то в компании :кек2:
__________________
 わからない!!
- 26.04.2016 / 02:19
MoteX
  Пользователь

MoteX 
Сейчас: Offline
Не дай бог я на работе буду крутить педали)
---------------
Несколько дней изучал чужие интерпретаторы. У некоторых более менее полноценных есть серьезная проблема: чем больше команд, тем медленнее работа. Я тут покумекал, и появилась мысль. Во взрослых ЯП есть импорты. Я решил сделать местный аналог: used. Сначала я подумал взвалить эту проблему на программиста, чтобы он закладывал used в начало кода или под "решетками". Но потом понял что это принесет геморрой, а язык для новичков. Теперь алгоритм такой: на этапе оптимизации кода под интерпретатор будут автоматически генерироваться "юзы" ) Например пользователь прибегает к помощи канвы и к функциям работы с сетью, добавляется used canvas, network. Теперь интерпретатор не будет и думать о не существующем функционале. К слову говоря их можно будет добавить и в ручную. Правда не знаю, кому это пригодится?)
Почему это не пришло в голову раньше - хз)
К слову об оптимизации кода. На этом шаге "выравнивается код" и записывается в формат для работы в интерпретаторе.
1) Удаляются/добавляются пробелы, корректируется регистр
2) Выражения, функции, конструкции и так далее разбиваются на логические части, что бы интерпретатор об этом уже не заботился на этапе исполнения, а просто и комфортно работал)
Ну и было принято решение шифровать исходники по умолчанию.
ОФфтопище: На выходных написал статью на хабре и вчера получил инвайт) :bis:

Изменено MoteX (26.04 / 02:24) (всего 5 раз)
- 26.04.2016 / 07:50
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
MoteX, то, что ты называешь оптимизацией, ею не является.
1) Удаляются/добавляются пробелы, корректируется регистрЭто форматирование.
2) Выражения, функции, конструкции и так далее разбиваются на логические частиТы про базовые блоки и control-flow graph что ли? Или про объектное отображение программы в памяти?

А оптимизация - это вычислить константное выражение в компайл-тайме, инлайн функции, размотка цикла, удаление мёртвого кода и ещё есть.
__________________
 don't tread on me
- 26.04.2016 / 08:14
MoteX
  Пользователь

MoteX 
Сейчас: Offline
aRiGaTo, оптимизацией на мой взгляд является все, что ускоряет работу в целом. Тот этап я назвал оптимизацией, потому что здесь будут проводиться все махинации с кодом перед его использованием. Форматирование в данном случае так же относится к оптимизации, ибо интерпретатору уже не нужно будет заботиться о них.
- 26.04.2016 / 09:44
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
А зачём тут форматирование? Ты же при лексическом анализе возьмёшь только нужные элементы (токены), опуская все ненужные пробелы. Или у тебя интерпретироваться построчно будет и каждый раз при переходе на новую строку читаться текст будет?
:ps: Кинь ссылку на статью, почитаю, плюс поставлю :)
__________________
 let live

Изменено aNNiMON (26.04 / 09:45) (всего 1 раз)
- 26.04.2016 / 16:02
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Я это еще в MB предлагал, разбить команды на таблицы и завести дополнительный байт для указания группы команды. Но естественно все забили
- 27.04.2016 / 01:20
MoteX
  Пользователь

MoteX 
Сейчас: Offline
aNNiMON, форматирование я сделал в двух местах:
  - пользовательский интерфейс (в случае если автоматическое форматирование включено)
  - Перед построением конечного "исходника". Это для разбиения на токены и формулировки (или как называется).
Все считываться будет только при старте в своеобразную таблицу. Или есть вариант лучше? (кроме компиляции ( не осилю :gg: ) )
P.S.: Статья: тырк

Изменено MoteX (27.04 / 01:22) (всего 1 раз)
- 31.05.2016 / 14:25
MoteX
  Пользователь

MoteX 
Сейчас: Offline
А тем временем моё дитя растет.
Проблему недостатка времени решил при помощи rdp, Теперь и на работе тихонько кодю когда есть минутка)
Долго ломал голову над грамотной реализацией интерпретации конструкций и всего остального. Теперь всё действительно работает. Пока ограничился несколькими функциями. К слову:
Из типов данных пока:
  - integer
  - double
  - string
  - boolean
  - bitmap
На мой взгляд для стартового набора достаточно. Если есть намерение предложить еще какой либо тип - пожалуйста.
Функции могут содержать в себе другие функции. Любая функция что либо да возвращает. Даже тот же принт вернет 0. То есть такой код, как
  1. print(print(print(print(0))))
будет работать :hack:
Наверх  Всего сообщений: 183
Фильтровать сообщения
Поиск по теме
Файлы топика (3)