我正在爲Elixir實現類似jinja2的模板語言的初始設計階段。我一直傾向於手動編寫詞法分析器,但最近我遇到了Erlang的leex模塊。它看起來很有前途,但經過一些最初的研究後,我不確定它是否適合我的目的。leex是編寫模板引擎詞法分析器的好選擇嗎?
我的一個猶豫是一種模板語言,實質上是一種字符串嵌入式語言,但不清楚如何使用leex在這種情況下使用標記化。作爲一個簡單的例子,假設令牌化這個模板:
<p>Here is some text for inclusion in the template.</p>
{% for x in some_variable %}
The value for the variable: {{ x }}.
{% endfor %}
在這個例子中,我需要確保kewords「爲」和「在」的切分不同,這取決於:
- 如果他們是一個標籤中:{%}
- 如果他們是一個標籤中:{{}}
- 如果它們在模板中,但不在任何標籤內。
對我來說,這看起來好像我需要在令牌化階段做兩遍,或者滾動我自己的詞法分析器,以便一次完成。
我想知道是否任何有詞法分析經驗的人,特別是leex或者寫模板引擎能夠提供一些洞察最好的前進方向?
好點,屬於解析階段而不是標記化階段。感謝您的澄清;我認爲你是對的。詞法分析器不應該知道任何標記的含義或代表。 – suprafly