Templates 在模板中创建控制流的最佳方法是什么?

Templates 在模板中创建控制流的最佳方法是什么?,templates,Templates,我正在制作自己的“语言/模板”,将其“编译”为另一种称为mcfunction的“语言”。其主要原因是mcfunction不包含循环或lambda,因此我本质上只想将这两个特性添加到它中。为此,我创建了自己的文件扩展名,并运行了一个程序,将自己的自定义语法转换为对mcfunction“language”有意义的语法 我已经取得了很大的成功,但是添加我想要的循环系统是很困难的,我想知道是否有比我现在更好的方法。我爸爸建议我使用一个模板,但我不知道它是如何工作的,并且在查找如何做时,我真的找不到任何有

我正在制作自己的“语言/模板”,将其“编译”为另一种称为mcfunction的“语言”。其主要原因是mcfunction不包含循环或lambda,因此我本质上只想将这两个特性添加到它中。为此,我创建了自己的文件扩展名,并运行了一个程序,将自己的自定义语法转换为对mcfunction“language”有意义的语法

我已经取得了很大的成功,但是添加我想要的循环系统是很困难的,我想知道是否有比我现在更好的方法。我爸爸建议我使用一个模板,但我不知道它是如何工作的,并且在查找如何做时,我真的找不到任何有帮助的东西

基本上,我想要实现的语法是

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

我需要用一个巨大的字符串替换这个语法的每个实例,并在理想情况下能够转义单引号,并将输入放在多行上。 所以

应该输出相同的东西


我开始在一个乱七八糟的正则表达式上工作,来帮我处理这个问题,或者分解它来帮助我,但是我爸爸告诉我一个模板引擎可能会有帮助,我不知道如何使它工作,所以我来这里寻求帮助。感谢阅读。

java与任何东西都有什么关系,即为什么要用java标记?@depperm噢,我忘了提一下。对于有点难以解释的约束,我必须用java编写。
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}"
)