Тема: TatEngine
Показать сообщение отдельно
Старый 02.09.2013, 04:32   #25
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: TatEngine

Сообщение от jimon Посмотреть сообщение
удобнее писать руками, удобнее читать глазами, меньшая избыточность, lazy syntax, ну и да - комментарии в коде

разделителем может быть : или , или ; или его вообще может и не быть

например :
// gml
sprite { transform { x: 5 } }
sprite { transform { y: 20 } }
// json
[
{ "type" : "sprite", "childrens" : [ { "type" : "transform", "x" : 5 } ] },
{ "type" : "sprite", "childrens" : [ { "type" : "transform", "x" : 20 } ] },
]
Чем не:
sprites: [
  { "transform": { "x": 5 } },
  { "transform": { "x": 20 } },
]
?
Сообщение от jimon Посмотреть сообщение
еще думаем над всякими плюшками типа string literals и raw strings (как в C++), что позволит писать GML в UTF-8, а на выходе получать строку в UTF-16 или 32, а raw strings позволит не экранировать символы в теле строки и писать там скрипты любой сложности прям внутри GML файла

например :
script
{
text : R"(
// lua script
print("wow");
)"
}
стараемся упростить все до предела чтобы на нем именно ХОТЕЛОСЬ писать, есть много красивых инструментов, а любимых очень мало

так же в schema-driven будет много экспериментальных вещей : lazy types, lazy nested objects, lazy scripts и тд, но это не относится к синтаксису языка

например :
/* сам объект sprite по schema требует чтобы к нему был присоединен объект типа transform, у sprite для этого есть дефолтное поле с именем transform которое принимает ссылку (bind в терминологии qml) на объект с типом transform */
sprite 
{
  // но если мы опишем объект с типом transform в теле sprite то gml сам его подхватит и прилинкует к полю transform
  transform { }
}

sprite
{
  transform { id: a }
  transform { id: b }
  transform : a // спрайт будет двигаться трансформом A
}

sprite
{
  transform : transform { x : 5 } // nested objects
}

spr // вместо указания полного типа можно указывать только первые буквы, да и еще убирая гласные (эксперимент)
{
  trn { x: 5 }
}

spr
{
  trn.x : 5 // можно обращаться к полям объекта через поля-ссылки
}

spr
{
  trn.x := math.sin(t) * 50 // если вместо : написать = или := то парсер будет ожидать nested script, выражение с = выполнится во время загрузки, выражение с := будет выполнятся каждый кадр (reactive programming)
}
и всякие прочие штуки чтобы упростить жизнь и сделать язык от которого оргазмируешь в прямом смысле
Это не будет языком, а будет "разметкой".
Да и любая попытка "упростить" требует создание каких либо механик, а они в 90% не оправдываются продакшаном и имеют ограничения. Которые в итоге вынудят других разрабатывать свои велосипеды.

Те же schem'ы, всегда имели % разрабов их не уважающих.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Harter (02.09.2013)