LINUX.ORG.RU

Создание транспилятора в tcl?

 , ,


0

1

Посмотрел буквально в течение 30 минут, как работает tclsh. Парсер команды прибит гвоздями. В этом свете неясно, насколько успешным могло бы быть предложение сделать язык, компилирующий в байт-коды тикля, библиотекой. MKuznetsov, что думаешь насчёт транспилятора в tcl? Т.е. отдельного компилятора (написанного хоть на tcl), который на выходе даёт код tcl?

★★★★★

если там внутри посмотреть, то там есть вполне себе виртуальная машина со своим (ещё одним) языком типа ассемблера. Можно порождать её инструкции. Есть даже дизасемблер :-)

если про скрипы, то нечто порождающее скрипты tcl, процентов на 90% и есть тикль, только оно об этом ещё не знает :-)

и я не понимаю честно говоря зачем генерить код высокоуровневого языка. Скорее затея сведётся к переезду на означенный язык.

PS/ tclsh работает довольно просто, чего там смотреть - инициализует всякое и ходит в цикле по DoOneEvent()

MKuznetsov ★★★★★ ()

если по поводу приведённой ссылки, то да то было-бы наверное удобно - язык использующий byte-code tcl и инфраструктуру, но более приближенный ко всяким С++/С#.

Сам по себе тикль вызывает диссонанс у неофитов :-(

Стоят ли усилия свеч? незнаю. По мне так проще миксить C/С++ и tcl в одном скрипте, благо что это возможно.

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

Я смотрел только на то, что составные части компилятора не берутся из таблицы, а являются просто функциями. В этот момент была потеряна надежда подставить в эту таблицу свою функцию вместо родной.

den73 ★★★★★ ()
Ответ на: комментарий от MKuznetsov

Сам по себе тикль вызывает диссонанс у неофитов :-(

Меня это в данный момент не интересует никак. bash ничем не лучше, но он победил, поэтому его все учат.

den73 ★★★★★ ()
Ответ на: комментарий от MKuznetsov

Стоят ли усилия свеч?

Не стоят. Ведь зачем людям tcl? Только ради tk, а его можно из любого языка дергать. Зачем же изобретать колесо? На самом деле tk наиболее выгодно юзать в связке с tcl. Кто этого не понял, тому и tk не больно то нужен.

anonymous ()
Ответ на: комментарий от den73

Я смотрел только на то, что составные части компилятора не берутся из таблицы, а являются просто функциями. В этот момент была потеряна надежда подставить в эту таблицу свою функцию вместо родной.

вообще не понял что ты хочешь сделать :-)

# просто пример как может выглядить вызов somelang из tcl
# импорт пакета и соотв. загрузка :
package require somelang
# а дальше мы его просто вызываем :
somelang procName {
  # тут следует код на НЁХ, главное чтобы скобки были парными
} 

тут somelang - это команда, которая получит 2 аргумента: имя команды которую надо создать и текст, по которому надо сгенерить её байт-код..

зачем тебе при этом парсер tcl? ты же хочешь из некоего somelang породить байт-код. У somelang очевидно свой парсер..

ZigLang упоролись патчить парсер только ради того чтобы переключать языки как «#lang zig».

MKuznetsov ★★★★★ ()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от MKuznetsov

А я не хочу, чтобы у меня было ограничение на парность скобок. Потому я и хотел подсунуть свой токенизатор. Хотя для начала можно и так.

den73 ★★★★★ ()
Ответ на: комментарий от MKuznetsov

Ну, наверное в решётке скрыт их символ, поэтому вопрос был действительно важный :) Не говоря о том, что наверное, парсер на Си будет намного быстрее, чем на самом тикле. А так-то можно написать программу, которая будет открывать файл и парсить его - и не нужно будет фигурных скобок вместе с их парностью.

den73 ★★★★★ ()
Ответ на: комментарий от den73

так-то конечно можно.

см. всякие «шаблонизаторы» у которых в синтаксисе половина html другая половина НЁХ от фантазий авторов. В простейшем случае это некий «препарсер» который переключает парсеры грамматик, оставляя какую-то общую часть

MKuznetsov ★★★★★ ()
Ответ на: комментарий от den73

а ты не знал ???

вроде как с tcl возишься не первый год и не глянул в стандартную библиотеку или на wiki.. я разочаровываюсь

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

На самом деле тикль мне нужен был как кроссплатформенный гуй и не более того. Я как огня боялся любого подмешивания туда Си, который обычно имеет проблемы и с совместимостью, и с кроссплатформенностью, и с надёжностью сразу. Поэтому нет причины смотреть в сишную библиотеку. Вики же я почитываю, ессно, но тут, напротив, не было раньше мотива смотреть на языки на базе тикля, поскольку такой задачи не было. Впрочем, неважно, ведь ты отходчивый :)

den73 ★★★★★ ()
Ответ на: комментарий от MKuznetsov

если внимательно смотреть в стандартную библиотеку или на wiki... то и поговорить будет не о чем )))

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.