Перейти к публикации
Форум - ComputerCraft

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

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

 

И да, я уже несколько раз пытался пересобрать 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
  • Like 1

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


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

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

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

 

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

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

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

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


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

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


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

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

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


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

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

 

Нет, другого синтаксиса для блоков кода нету.

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

Очень советую включать в редакторе конвертацию табов в пробелы. А если появляется необъянимый глюк - включать отображение пробельных символов (обычно отмечаются точками и черточками), чтобы увидеть потенциальный косяк.

 

Зато код будет чистым, белым и пушистым  :D

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


Ссылка на сообщение
Поделиться на других сайтах
Да, с ошибками случаются сложности. Надо обязательно проверять, не закрался ли где случайно таб, вместо пробелов...  Зато код будет чистым, белым и пушистым 

Жертвы ради "пушистости" несоизмеримы с полезным выхлопом. Когда будут метаться кусманчики кода лярдами или тысячами строк откуда-то куда-то, искать потом какой-то пробельчик - гемор еще тот, наверно=)

 

 

Это как если бы взять да и не разбить обычный текст 

И такая дребедень Целый день: Динь-ди-лень, Динь-ди-лень, Динь-ди-лень!То тюлень позвонит, то олень. 
А недавно две газели Позвонили и запели: - Неужели В самом деле Все сгорели Карусели?

на абзацы/строфы, и при этом его уже не один простой человек  или даже лингвист  не сможет его скомпилировать и понять смысл=)

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

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


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

Жертвы ради "пушистости" несоизмеримы с полезным выхлопом. Когда будут метаться кусманчики кода лярдами или тысячами строк откуда-то куда-то, искать потом какой-то пробельчик - гемор еще тот, наверно=)

 

...

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

 

Нету гемора, когда привыкаешь к синтаксису.

Если писать в нормальном редакторе типа Sublime, то нет никаких проблем что-то куда-то скопипастить, и даже по пути автоматом табы в пробелы конвертнуть.

=)

Смешивать табы и пробелы в коде, это вообще такое дело, за которое надо руки отрывать.  ;)

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


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

 

 

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

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

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


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

 

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

 

 

Как я уже сказал, смешивать табы и пробелы не стоит ни в коем случае.

Либо используй отступы табуляцией, либо пробелами.

 

Однако скажу по секрету, что MoonScript считает один таб равным 4 пробелам.  :)

  • Like 1

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


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

А ещё лучше — не выпендриваться, и использовать мягкую индентацию пробелами вместо жёстких табов.

Вы не мейкфайл или сырцы ядра Линукса пишете. Есть правила, стайл-гайды, которые рекомендуется соблюдать.

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

 

Для справки можете ознакомиться со статьёю на вики.

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


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

Заморочился и добавил MoonScript for OpenCoputers в репозиторий.

Теперь MoonScript можно установить на ваш компьютер одной командой:

hpm install moon

P.S. Я правда не проверял, работает ли оно как надо. =) Возможны очепятки. Поэтому если кто проверит пакет moon - буду благодарен.

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


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

выглядит вкусно, но пахнет питоном, против него ничего не имею, но питон мне винигрет напоминает)

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


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

выглядит вкусно, но пахнет питоном, против него ничего не имею, но питон мне винигрет напоминает)

 

В таком случае - попробуй что-нибудь написать на нём.  :D

Может прийтись по вкусу, может наоборот.

 

На мой взгляд MoonScript добавляет в Lua немного функционального духа. И делает синтаксис немного более математическим.

  • Like 2

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×