Накидал реализацию.
Спасибо. Несмотря на то, что переключение клавиатуры для {}<> уже стало восприниматься как неудобство, первая написанная мной для этого интерпретатора программа и работает, и выглядит красиво:-). Возможно, несколько недостаёт закапывания-выкапывания, но пока что попытаюсь обойтись файлами, т.к. именно стек мне сейчас не очень нужен.
Прошу прощения, что не ответил оперативно - почему-то не вижу в почте уведомление о новом сообщении в данной теме.
Неудобства при наборе скобочек - одна из причин, почему работа приостановлена. Даже рассматривал вариант изменения (точнее, поддержки альтернативного варианта) синтаксиса одно время. В частности, добавить поддержку «конвейера»
Начало ! = <Print !> : (…) = <Prout !>; // <<Prout <Print !>>
а следующим шагом как-то уйти от <>
Начало ! = ! -> Print : (…) -> Prout; // за что боролись, на то и напоролись
К счастью, узнал о раскладке
Ручей. Она уже
есть в Линуксах начиная с xkeyboard-config-2.36. Достаточно добавить оба варианта Russian (Engineering), см. во вложении пример для оболочки Gnome. {}<> вводятся привычными клавишами при нажатии правой Alt.
Что касается стека, на первый взгляд его несложно добавить на базе такого же двусвязного списка, что используется под поле зрения - рядом в той же «куче» расположить второй. Не реализовал, поскольку сам я на Рефале писал мало и мне оно пока не требовалось. Интереснее было найти решение, как реализовать лямбды без сборки мусора с подсчётом ссылок - насколько понимаю, в ряде случаев замыкания заменят стек. А так же добавить блоки и/или условия как у В.Ф. Турчина. Потом привести работу с файлами к виду, когда не приходится вручную оперировать с их описателями. Всё это упирается в необходимость написать что-то посложнее, например LSP сервер для Рефала (заодно получим подсветку синтаксиса в редакторах с поддержкой, т.е. почти везде). Беда в том, что у меня мозг слегка вывихнут ассемблером и машиной Тьюринга, обсудить развитие не с кем (о проекте Рефал-5λ знаю, но не хочу невзначай помешать учебному процессу), а если я в одиночку увлекусь такой затеей, то привычные к Рефалу наверняка будут удивлены результатом. Получается вот такой замкнутый круг. В итоге ждал, что
Skull после запроса выше ответит хотя бы «ну кто так пишет транслятор, в одной то функции? бэст практикз рекомендуют декомпозицию». Теперь надеюсь, Вы расскажете больше о своей программе, а может быть даже покажете наиболее красивые её фрагменты. :-)