Каков наилучший способ создания потока управления в шаблонах? - PullRequest
0 голосов
/ 01 ноября 2019

Я работаю над созданием своего собственного "языка / шаблона", который "компилируется" в другой "язык", называемый mcfunction. Основная причина этого в том, что mcfunction не содержит циклов или лямбд, поэтому я просто хочу добавить к ним эти две функции. Я делаю это, создавая свое собственное расширение файла и имея программу, которую я запускаю, преобразую свой собственный синтаксис в синтаксис, который имеет смысл для "языка" mcfunction.

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

По сути, синтаксис, который я хочу реализовать, похож на

[('foo','bar'),('baz','qux'),('quux','quz')](
    say {1}
    tellraw @a "{2}, {1}"
)

в

say foo
tellraw @a "bar, foo"
say baz
tellraw @a "qux, baz"
say quux
tellraw @a "quz, quux"

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

[
    ('foo','bar'),
    ('baz','qux'),
    ('quux','quz')
](
    say {1}
    tellraw @a "{2}, {1}"
)

должен вывести то же самое.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...