我在寫一個樹枝標籤,我想告訴Tokenizer標籤第一個參數是常量而不是表達式。樹枝,解析器,僅字符串(禁止表達式)
對於例如,可以說我的標籤是 「回聲」 的別名:
{% tagname 'toto' %}
應該產生 「TOTO」(不含引號)
{% tagname toto %}
也應該產生 「TOTO」(不包括引號)
{% tagname toto.xx %}
應該產生 「toto.xx」(不含引號)
問題出現在最後一個例子中,Token解析器認爲「toto」是一個表達式,因此查找一個名爲「toto」的變量。
所以我想知道是否有可能以某種方式指定標記參數必須是一個常量?
我的代碼看起來像現在:
public function parse(\Twig_Token $token)
{
$parser = $this->parser;
$stream = $parser->getStream();
$text = $parser->getExpressionParser()->parseStringExpression();
我也試過parsePrimaryExpression,parseHashExpression從ExpressionParser(是錯誤?)
在此先感謝
你是什麼意思?一個PHP常量? –
是否有一個特別的原因,你希望樹枝解析表達式的字符串......這對我來說並不合適。塊標籤使用類似的東西,也許你應該看看那個。 – nifr
我知道這看起來很奇怪:現在,我們得到了一個使用了很多preg_ *的DSL。爲了可維護性目的,我試圖將它轉換爲樹枝。 DSL被最終用戶所使用,我不想用「這不是一個有效的字符串語法」來打擾他們,並且比樹枝更寬容。但是,如果這是不可能的,我可能會保留舊的東西正則表達式:(。 – cyqui