我正在制作自己的“语言/模板”,将其“编译”为另一个称为mcfunction的“语言”。这样做的主要原因是mcfunction不包含循环或lambda,因此我基本上只想向其添加这两个功能。为此,我创建了自己的文件扩展名,并运行了一个程序,将自己的自定义语法转换为对mcfunction“ language”有意义的语法。
我大部分时候都取得了成功,但是添加所需的循环系统很困难,我想知道是否有比现在更好的方法。我父亲建议我使用模板,但是我不知道它是如何工作的,我不知道该怎么做。
基本上,我要实现的语法类似于
[('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}"
)
应该输出相同的东西。
我开始研究一堆正则表达式来为我解决这个问题或将其分解以帮助我,但是我父亲告诉我,模板引擎可能会有所帮助,所以我不知道该如何做这项工作,所以我来了在这里寻求帮助。感谢您阅读本文。