Перейти к содержимому

Рекомендуемые сообщения

Я сам хотел написать про мунскрипт, так как я фанат этого языка и пишу Арбузер на нем. Ты меня опередил.

 

И да, я уже несколько раз пытался пересобрать moon компилятор под ОС, но потратив десятки часов изучения исходников остановился на поиске решения с заменой debug функций, отмененных в ОС, но использующихся при компиляции.

Буду рад сотрудничать в этом направлении, так как хочу сделать moon-интерпритатор и возможность запускать .moon файлы прямо из OpenOS.

 

Тему желательно перенести в статьи в силу ее образовательной функции, а не форумного обсуждения.

 

P.S. Лайк за ООП. Респект Тоторо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему бы, для установки Debian + Lua5.3 не сорганизовать bat-ник ? Чтобы автоматом устанавливало и фиксило.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И да, я уже несколько раз пытался пересобрать moon компилятор под ОС, но потратив десятки часов изучения исходников остановился на поиске решения с заменой debug функций, отмененных в ОС, но использующихся при компиляции.

Буду рад сотрудничать в этом направлении, так как хочу сделать moon-интерпритатор и возможность запускать .moon файлы прямо из OpenOS.

 

Вот я в ту же тему думаю сейчас. Хочу почитать исходники и подумать, как этом можно сделать.

В идеале надо будет собрать в виде пакета для OPPM или нашей новой репы.

В общем, будет желание - подрубайся к IRC (http://webchat.esper.net/?channels=cc.ru ), я там почти каждый день.

 

 

А почему бы, для установки Debian + Lua5.3 не сорганизовать bat-ник ? Чтобы автоматом устанавливало и фиксило.

 

Ну, это просто частный случай же. Я показал, какие действия нужны для того чтобы это поднять на локальной машине,

и какие потенциальные грабли могут встретиться.

Если ставить это все под Lua 5.1, то ошибок вообще не должно быть.

А вообще можно и скрипт соорудить. Если сделаешь что-нибудь такое, кидай ссылку, я прикнопаю к первому посту. =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Меня больше волнует в процессе портировании LPeg


Там вроде на debug только эмуляция getfenv/setfenv. Если найдём замену LPeg - можно будет найти какой-то парсер Lua и сделать таблицу с функциями и их сырцами


И, мне кажется, всё это дело проще вынести на c9/openshift/другой хост - на опенкомпах будут ЛАГИ

Изменено пользователем evgkul

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Меня больше волнует в процессе портировании LPeg

Там вроде на debug только эмуляция getfenv/setfenv. Если найдём замену LPeg - можно будет найти какой-то парсер Lua и сделать таблицу с функциями и их сырцами

И, мне кажется, всё это дело проще вынести на c9/openshift/другой хост - на опенкомпах будут ЛАГИ

 

Если выносить на сторонний сервак, то можно тогда вообще заюзать https://github.com/leafo/moonscript-javascript

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опенкомпы умеют юзать javscript? Если node, то, проще как CGI на сайт затолкать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я имею ввиду, что один из вариантов - поднять на стороннем серваке "компилятор" MoonScript.

По ссылке что я кидал как раз его реализация на JS. То есть поднять вообще ноль проблем.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Будет ОЧЕНЬ лагуче, компилятор - либа, сделанная из lua, lpeg и moonscript через emscripten, а cgi умеют почти все веб-сервера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Будет ОЧЕНЬ лагуче, компилятор - либа, сделанная из lua, lpeg и moonscript через emscripten, а cgi умеют почти все веб-сервера

 

Ну, вот эта хрень же работает: http://moonscript.org/compiler/

Можно попробовать на серверную часть то же самое свалить.

 

UPD. Хотя да, ты прав. Будет лагуче.

Изменено пользователем Totoro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

LPeg для Lua уже есть и называется LuLPeg

 

И да, для совместной работы я создал репу на C9, просите доступ кто будет участвовать.

https://ide.c9.io/krutoy242/moonoc

 

Я уже изменил там большенство либ и добавил свои, что бы всё запускалось на ОС.

Изменено пользователем Krutoy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
LPeg для Lua уже есть и называется LuLPeg

 

И да, для совместной работы я создал репу на C9, просите доступ кто будет участвовать.

https://ide.c9.io/krutoy242/moonoc

 

Я уже изменил там большенство либ и добавил свои, что бы всё запускалось на ОС.

Там совместимость с LPeg неполная

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там совместимость с LPeg неполная

В доках LuLPeg написано, что ВСЕ функции поддерживаются, файл теста выполняется почти полностью, за исключением технических. Вот:

LuLPeg passes most of the LPeg test suite: 6093 assertions succeed, 70 fail.

None of the failures are caused by semantic differences. They are related to grammar and pattern error checking, stack handling, and garbage collection of Cmt capture values.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Придолбал костыль, вроде работает БЕЗ debug


--getfenv и setfenv юзаются только один раз, можно особо не заморачиватся
local tablo={} --Окружение
local envtablo -- над этой таблицей будут проводится издевательства
local function setfenv(func,argtablo)
  envtablo=argtablo
  local metatablo ={__index=envtablo,__newindex=envtablo}
  setmetatable(tablo,metatablo)
  return func
end
local function getfenv()
  return envtablo
end
local function prepare(func)
  setfenv(nil,_ENV)
  return func
end
return {setfenv=setfenv,getfenv=getfenv,prepare=prepare,tablo=tablo}
Изменено пользователем evgkul

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Заказываю ЗДОРОВЕННЫЙ файл с кодом на moonscript для тестов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопросы оп языку.

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

Пример: две функции в классе

class SomeContainer
 set: (some) => --как компиль понимает, что функция get не является локальной внутри set? Если не с помощью табуляции, то возможно по "=>", а если бы я использовал "->" и не обращался к контейнеру, а просто возвращал константу?
    @some=some
 
 get: () =>
    @some

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Очевидно, по индентации. Кроме того, для пустых функций необязательно использовать скобки для параметров.

А => ты с успехом можешь юзать внутри функции.

test = ->
  -- вот и "=>"
  func = (a) =>
    @foo = "bar" .. tostring tonumber a
  func
fn = test!
a = {foo: "baz"}
fn a, 5
print a["foo"]
assert a["foo"] == "bar5"

Просто нужно понять, что =>, на самом деле, просто работает как : в Луа: добавляет сам в начало аргумент self, который может принимать любое значение. А cls\method a, b, c преобразуется в cls.method cls, a, b, c. Просто синтаксический сахар, не более того.

Изменено пользователем Fingercomp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь как в Питоне, определенной длины отступ слева обозначает блок кода.

То есть пока длина отступа не меняется - это все один блок.

 

Впрочем, для коротких функций в одно выражение, перенос использовать не обязательно, и можно написать что-то такое:

-- функция, которая всегда возвращает 10
f = () -> 10

В два выражения уже надо юзать отступ, иначе второе выражение будет считаться идущим после функции (после компиляции окажется за ее пределами):

-- Неправильно
f = () -> print 'Done'; 10


-- Правильно
f = () ->
  print 'Done'
  10
Изменено пользователем Totoro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А есть явные скобки для функций и других выражений? Отступы выглядят, конечно очень красиво и чисто, но ошибки в них, как мне кажется, будет очень трудно искать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...