编辑:您可以在此处关注进度:https ://github.com/simple-updates/template
我正在使用peg.js并尝试编写一些可以解释模板的东西,例如:
hello {{ "world" }}
{% if a %}
good {{ a }}
{% else %}
bad
{% endif %}
我尝试了很多事情,但假设这是我的起点:
Template
= ws markup ws
ws = " "*
open_interpolation = "{{"
close_interpolation = "}}"
open_tag = "{%"
close_tag = "%}"
char = . // ?
markup =
(open_tag tag:char* close_tag)
{ return { 'tag': tag.join('') } } /
(open_interpolation interpolation:char* close_interpolation)
{ return { 'interpolation': interpolation.join('') } } /
chars:char*
{ return { 'chars': chars.join('') } }
例如,当我尝试字符串时{{ test }}
,它只会将其解释为字符而不是插值。
知道我该怎么做吗?
(显然嵌套“标记”会更复杂)