LINUX.ORG.RU

3
Всего сообщений: 45

Какие способы для создания DSL есть в Java?

Собственно сабж, не хочу переходить на Kotlin только из-за этого.

 ,

wall_jvm ()

Stodin DSL. Тема 4. Квадраты.

Продолжаю серию тем про язык программирования Stodin DSL, который разрабатываю через проекты. В этот раз создал игру «Квадраты», на основе ранее созданной игры «Четыре героя». Основное назначение игры - занять себя чем-то во время видеоконференций или прослушивания «болтологов».

Процесс игры записал на видео: https://www.youtube.com/watch?v=YZUAp45pT8Q (ссылку уже давал в другой теме)

Код игры: https://github.com/kupriyanov-sn/StodinDSL/blob/master/examples/sdl_four_heroes_game

Инструкция и бинарики здесь: https://disk.yandex.ru/d/xJhJrNFPqgNLyg?w=1

Версия для Linux требует библиотеку SDL2. Работу проверял только в Убунте. Также можно запустить под Wine виндовую версию.

Не удержался и внёс изменения в синтаксис языка: добавил case. Через if-elif некоторые конструкции тяжело читать. В питоне в таких случаях делают словарь с указателями на функции, но это сложнее для восприятия. Может быть когда-нибудь и реализую через делегаты.

Вопросов у меня нет. Просто решил поделиться.

 , ,

Kogrom ()

Stodin DSL

Здравствуйте!

В данной теме представляю для обсуждения язык программирования, созданный с использованием принципов разработки предметно-ориентированных языков (по книге Мартина Фаулера). Ссылка на проект языка: https://github.com/kupriyanov-sn/StodinDSL

Язык называю DSL только по методу разработки и по синтаксису. По возможностям он близок к языкам общего назначения. При этом, по лаконичности он близок к Python, хотя и статически типизированный. Назначение языка - ускорение разработки небольших проектов на C++.

В данный момент это работающий прототип. Библиотека языка пока на начальной стадии разработки. Но уже есть 3 небольших приложения-примера, написанных на Stodin (в examples).

Возможно, у кого-нибудь будут идеи, советы, пожелания как по библиотеке, так и по синтаксису.

 , ,

Kogrom ()

Не идет автоматическое подключение к dsl в последней версии

Стоял у бабушки крысунту несколько лет, проблем не было с этим. Обновился недавно до версии 18 наступили проблемы с коннектом dsl. Делал pppoeconf - часто не подключается автоматически. А если сделать pon dsl-provider. Пробовал делать коннект через менеджер коннектов в xface - толку нет. Притом если загрузиться с флехи в Ubuntu или с винду то коннект прекрасно работает без сбоев. То есть не в проводе дело. Решил поставить крысоминт 19 с флешки. Поставил. Настроил. DSL через pppoeconf. Два дня dsl коннект работал без проблем и вдруг вчера ночью презагрузился и перестал автоматически подключаться. Те же меры принимал - не помогает.

 , , ,

dwarfadelic ()

Проблемы с Windows после запуска Linux LiveCD

Попытаюсь описать проблему как можно подробнее.

У меня стоит Windows 10, и мне потребовалось её переустановить. Я уже сделал установочную флешку для винды, но личные файлы в облако ещё не скинул.

Для форматирования диска перед переустановкой я решил использовать Linux LiveCD. У меня было две болванки, на одну я записал Kali Linux, а на другую DSL (Damn Small Linux).

Зашёл в биос, сделал загрузку с DVD-привода.

Первым загружал Kali Linux. Он не загрузился. Вот последняя строчка:

end Kernel panic - not syncing: No working unit found. Try unit= option to kernel.

Потом вставил диск с DSL. Он тоже отказался запускаться:

Can’t find KNOPPIX filesystem, sorry. Dropping you to a (very limited shell.)

Ну, думаю, ладно, найду какую-нибудь другую LiveCD. Захожу в биос, ставлю всё как было. Запускаю винду, но вылетает синий экран с ошибкой INACCESSIBLE BOOT DEVICE.

Я пытался решить эту проблему с помощью отката к последней точке сохранения Windows. Не помогло. Я из командной строки стандартных средств восстановления проверил диск. Все файлы на дисках C и D на своих местах. Также я сделал chkdsk. Вот результат:

Обнаружены ошибки в файле преобразования к верхнему регистру.

Ошибка передачи сообщений о регистрации в журнал событий. Состояние ошибки: 50.

Я пытался запустить chkdsk с параметром /F (исправление). Пишет, что диск защищён.

Вот такая вот проблема. Помогите решить. И вообще чем она может быть вызвана? Жду ответов.

 , , , ,

IAmGM ()

трансляторы из common lisp в c# f#

Интересны концепции/исходники трансляторов подмножества clos в мейнстримовые ооп-языки.

Нахожу только варианты с edsl для cl, который транслируется в целевой язык банальной подстановкой блоков кода, например, на c++ (arduinolisp). То есть ограничим язык edsl, а потом еще раз ограничим подстановкой готовых блоков.

Из не такого тривиального нашел только parentscript, но он для js.

 , ,

panzerito ()

Посоветуйте красивый dsl для fsm

Чтобы можно было красиво создавать fsm-сети. Нахожу только покалеченные java/c++ синтаксисом dsl. И, похоже, про соединение fsm в сеть создатели даже не задумывались при проектировании языка.

 

panzerito ()

Не работает dsl соединение. Дистрибутив Solus

Создаю dsl, ввожу там в нём логин и пароль. Нажимаю подключится к нему, кружек в трее крутится секунду и ничего не происходит, не подключается интернет. Может кто подсказать решение проблемы ? В убунте всё изи было, водил просто sudo pppoeconf, а тут такой утилиты нету в solus (((

 , ,

Hakage0 ()

Настройка автоматического подключения pppoe на ADSL-модеме Zyxel

Товарищи, помогите!

Имеется комп с Linux Mint 18.2 с network-manager.

К интернету подключение через ADSL-модем Zyxel 660RU3, который к компу присоединяется через usb, либо через Ethernet.

Однако NM видит соединения только при подключенном usb. Да и то, чтобы подключиться к интернету, нужно удалить два имеющихся «Wired connection», выдернуть usb и снова вставить. После этого подключается автоматически.

Самое забавное, что никаких логинов/паролей/DNS вводить не нужно, все на автомате. А вот на листочке от провайдера прописаны логин, пароль, dns1, dns2. Протокол: PPPoE. VPI: 0. VCI: 33.

ifconfig -a

enp3s0    Link encap:Ethernet  HWaddr 00:1f:e2:69:cc:07  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


enxcc5d4ed3ac11 Link encap:Ethernet  HWaddr cc:5d:4e:d3:ac:11  
          inet addr:192.168.1.33  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::3d5b:d0b5:b583:7a1d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:86080 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59816 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:115184468 (115.1 MB)  TX bytes:8059941 (8.0 MB)


lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:6104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6104 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:796053 (796.0 KB)  TX bytes:796053 (796.0 KB)
uname -a
Linux lucicompus 4.8.0-53-generic #56~16.04.1-Ubuntu SMP Tue May 16 01:18:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

 , , , ,

Geekmalve ()

Генерация джава кода - что использовать, с чего начать

Привет! Нужно сгенерить джава код по шаблону, нужно распарсить существующие джава классы(DTO) и на их основе сгенерить новый класс, который будет использовать существующие методы. Кто сталкивался с такой задачей - какие подводные камни, какие инструменты лучше использовать, есть ли примеры(быстрый гуглинг удобоваримых примеров не дал)?

В принципе можно быстро написать парсер на питоне, но вдруг есть более подходящие инструменты?

Задача как я ее вижу: 1) Распарсить геттеры/сеттеры класса и принимаемые значения 2) Сгенерить свои методы основываясь на этой инфе(имя и возвращаемые значения) 3) Если встречаем в field тип из нашего пакеджа - рекурсивно генерим еще один класс

 , ,

by_zero ()

DSL для описания условных маршрутов

Есть набор конечных точек. Между ними ходят сообщения. К сообщению может быть применена некоторая функция прежде, чем оно будет передано получателю. В общем случае конечные точки образуют граф.

Нужно задать маршруты как точки соединены между собой. И привязку функции в зависимости от полей в сообщении.

Собственно ищется готовый язык для описания таких схем.

 , , ,

pon4ik ()

Конфликт подключений DSL и enp3s0

Доброго времени суток. Столкнулся с такой проблемой - временами подключение по DSL отказывается работать, при чем странным образом - подключение есть, а передачи данных нет. Пользуюсь network manager. Если в нем отключиться от DSL соединения, то зачастую, появляется подключенное enp3s0 соединение по ethernet. Если его удалить и снова подключиться к DSL - все работает. Вот только через некоторое время, или после перезагрузки компьютера проблема появляется снова. Подскажите как бороться или в какую сторону копать, а то я что-то и не соображу. Заранее спасибо. Пользуюсь arch линуксом, если это важно.

 , , ,

Mialder ()

Установка DSL через терминал

Всем привет. Возникла потребность в установке DSL для медленного компьютера. Можно установить этот дистрибутив через терминал в ubuntu?

 , ,

guitarist15 ()

Почему .NET лучше натива, моё мнение

Надеюсь, тут сидят не одни школьники, а есть и люди, которые наверняка помнят, как было весело во времена DOS и реального режима, когда возможно было писать на ассемблере самомодифицирующийся код. Это давало просто бесконечную гибкость.

С выходом на сцену так называемых языков высокого уровня стало немодным привязываться к платформе (хотя 99% crapware так и не осилили перенести с wintel32 даже на wintel64) или модифицировать двоичный код во время исполнения. От последнего даже появились защиты.

С потерей гибкости, связанной с возможностью модификации кода во время исполнения, разработчики стали искать другие источники гибкости, с переменным успехом пытаясь получить её в ООП, ФП, АОП и т.д. Но было очевидно, что всё это не то.

Все изменилось с появлением JVM: появилась единая платформа с безопасным доступом к «машинному» коду. Кто не слышал о реализации корутин для Java модификацией байт-кода?

JVM была недостаточно хороша, поэтому знамя подхватил .NET. Хотите, например, AOP со связыванием/отвязыванием концептов во время исполнения без модификации исходников? Есть и такое. Хотите генерировать код в рантайме? Запросто. JIT оптимизирует до маш. кода, производительность не пострадает.

.NET принёс нам бесконечную гибкость плюс типобезопасность. Наверное поэтому его так любит Луговский, за простоту компиляции DSL-ей.

 ,

anon_2018 ()

Москва, приму в дар рабочий ADSL дейвайс

Обещаю, что он будет работать и приносить пользу. Ага, мне dsl светит в ближайшем будущем.

Спасибо.

ЗЫ. Мож есть PCI внутренний модем? Это было бы ваще идеально.

ЗЗЫ. Мне дарят http://www.cisco.com/c/en/us/products/routers/887-integrated-services-router-... . Поэтому, наверное, ставим «решено». Всем спасибо.

 , ,

targitaj ()

Аккуратный туториал по созданию интерпретатора императивного динамического языка

Мне нужно написать несколько статей про оптимизации в интерпретаторах.
Структура статей должна быть такая:
1) Пишем интерпретатор
2) Накладываем оптимизации

Можно написать полностью свой туториал в части 1, но как оказалось - это огромный труд. Вот написал ты простенький интерпретатор, уже начал накидывать текст учебника, и тут фигак - понял, что что-то фундаментально упущено. Поменял код интерпретора, и понимаешь, что половину описывающей его статьи можно выбрасывать на помойку. Включая кучу картинок с примерами, которые теперь перерисовывать. Несколько итераций перерисовывания картинок - и просыпается желание убивать

Плюс тема имеет тенденцию к разрастанию из туториала на 10 страниц в талмуд на тысячу, в формате «и тут Остапа понесло». Ты ждешь, что там будет всего несколько файлов кода, но у вот уже у тебя несколько десятков классов для айара, и это выглядит как только начало :)

Хотелось бы взять за основу какой-то уже готовый туториал, в котором рассматривались базовые вещи типа императивных базовых блоков, статических и динамических типов, прототипов и классов, и других основополагающих вещей. Основное требование в том, чтобы это была замкнутая самодостаточная минимальная статья/книга, а не «фичи друг с другом не работают, но напишу когда-нибудь потом» (автор хитро улыбаясь уходит в горизонт).

Я для низкоуровневой реализации буду юзать джаву (потому что люди, понимающие C++ потихоньку исчезают), поэтому желательно, чтобы у автора туториала было что-то похожее. Не имею целью оскорбить, но лисполапша или ассемблер очень плохо влияют на скорость осмысления и адаптации под императивный язык.

 ,

stevejobs ()

Язык выражений для встраивания в приложения

Привет, ЛОР.

Хочу, чтобы ты подсказал мне проект, суть такова. Есть необходимость встроить в приложение (на JS, но это не слишком важно) некий язык выражений.

Важно, чтобы он удовлетворял следующим свойствам:


  • Декларативность
  • Возможность средствами статического анализа на 100% определить корректность выражения, в т.ч. с т.з. семантики (как я понимаю, отсюда следует сильная типизация)
  • Возможность прокинуть в контекст выполнения выражения произвольные объекты из приложения и операции над ними
  • Результатом работы выражений должно быть булево значение (либо, в идеале, произвольный объект)
  • Чем проще синтаксис – тем лучше. Если это будет просто AST в виде JSON-объекта/S-выражения – уже здорово. Полноценный язык не нужен, сложная логика должна выноситься в отдельные операции, описанные на стороне приложения
  • Лицензия, позволяющая модификацию и использование в коммерческих проектах (если такое понятие вообще применимо к языку, а не реализации)


Интересует прежде всего язык, даже если нет готовой реализации под JS, но язык простой – я могу написать её.
Лично я себе это представляю как примерный аналог ElasticSearch Query DSL (решает схожую задачу) или чего-то подобного.

 , , ,

unikoid ()

Монтирование флешки в DSL

Здравствуйте! У меня стоит Damn Small Linux 4.11. Когда я пытаюсь примонтировать флешку командой

sudo mount -t vfat /dev/sda1 /mnt/usbflash -o iocharset=utf8,codepage=866,rw
то в ответ получаю сообщение
/dev/sda1 is not a valid block device
Кто виноват и что делать?

 , ,

Borzalex ()

Своя подсветка синтаксиса в vim

Всем привет! Есть DSL, в котором комментарии начинаются с решётки (#). Еще в DSL можно писать функции, в которых комментарии начинаются в C/C++ стиле, и комментарии с решетки запрещены. Типа того:

...some code
# comments
proc myfunc @{
     # ошибка! это не комментарий
     // нормальный коммент
     /* еще один
      * нормальный коммент */
@}
...come code

Сейчас я обхожусь этим:

syn region binpacComment start="#" end="$"
syn region binpacComment start="//" end="$"
syn region binpacComment start="\/\*" end="\*\/"
hi def link binpacComment Comment

Но это приводит к тому, что во всем файле просто подсвечиваются как комментарии все три вида: #, //, /* */

А хочется, чтоб вне функций подсвечивалось только #, а в функциях только // и /* */.

Заранее спасибо за любую помощь или пример.

 , ,

Deleted ()

Не получается установить DSL/PPPOE соединение через pppd

Третьи сутки бьюсь, пытаюсь подключить ArchLinux к общажному интернету. Под Ubuntu в Network Connections всегда выбирал DSL connection и автоматическое PPPoE, вводил логин пароль и все работало. За это время я перепробовал несколько разных инструкций, в частности: эту и эту. Выполнение всех инструкций давало одинаковый результат, поэтому я приведу в пример только вторую, через pppoe-setup.

Заранее извиняюсь за скриншоты, но это единственный возможный вариант:

 , , ,

zoroaster ()