.1875
で.
はすでにテンプレートのレンダリングの最初のステップで句読点トークンとして同定されています。
Twigのドキュメントでは、このプロセスについてTwig Internalsと記載しています。最初のステップで:
レクサーは、ドキュメントのセクションThe Lexerトークンストリーム
にテンプレートソースコードをトークン化し、それがトークンストリーム内にいくつかのソースコードを変換する方法を示しています。
$ex1 = '{{ form.vars.attr.dimensions.width * 0.1875 }}';
$ex2 = '{{ form.vars.attr.dimensions.width * .1875 }}';
$stream1 = $twig->tokenize(new Twig_Source($ex1, 'example1'));
$stream2 = $twig->tokenize(new Twig_Source($ex2, 'example2'));
出力はこのようなものです:私たちはあなたの二つの例でそれを行う場合には、プロセスの次のステップで
Example 1: Example 2:
VAR_START_TYPE() VAR_START_TYPE()
NAME_TYPE(form) NAME_TYPE(form)
PUNCTUATION_TYPE(.) PUNCTUATION_TYPE(.)
NAME_TYPE(vars) NAME_TYPE(vars)
PUNCTUATION_TYPE(.) PUNCTUATION_TYPE(.)
NAME_TYPE(attr) NAME_TYPE(attr)
PUNCTUATION_TYPE(.) PUNCTUATION_TYPE(.)
NAME_TYPE(dimensions) NAME_TYPE(dimensions)
PUNCTUATION_TYPE(.) PUNCTUATION_TYPE(.)
NAME_TYPE(width) NAME_TYPE(width)
OPERATOR_TYPE(*) OPERATOR_TYPE(*)
NUMBER_TYPE(0.1875) PUNCTUATION_TYPE(.) <----
VAR_END_TYPE() NUMBER_TYPE(1875)
EOF_TYPE() VAR_END_TYPE()
EOF_TYPE()
、パーサが木にトークンストリームを変換しようとし、あなたが見ているエラーを引き起こすオペレータの後に句読トークンが意味をなさない。
最初のステップでTwig lexerがそのように動作する理由は、the sourceをチェックすると、式レクサーが入力文字列をステップ実行し、さまざまな正規表現を順番に適用します。数の正規表現は.1875
一致しない
'/[0-9]+(?:\.[0-9]+)?/A'
であり、そして次の工程で、.
は句読点として識別されます。
ゼロを付けずに10進数で動作させる方法を見つけようとすると、この回答は役に立ちませんが、動作の仕方を理解することにもっと興味があるように思えますこれは参考になります。
おそらく、それは 'twig'の実装のためです。 [here](https://twig.symfony.com/doc/2.x/templates.html)の全リストを見ることができます。あなたは少し向けてスクロールする必要があります*実装* – DarkBee