]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Add integer and float literals
authorKevin Brown <kevin@kevin-brown.com>
Fri, 8 May 2020 12:15:31 +0000 (08:15 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 01:50:06 +0000 (21:50 -0400)
These align with the one already supported by Jinja.

tatsu_grammar.txt
test_template.jinja

index 9adc5299b6a09f580b3ad712c17d1061ed90070e..1144b864295b7f0d2dc8ce04c385f5327b859330 100644 (file)
@@ -76,7 +76,7 @@ variable_close
 \r
 variable_identifier\r
     =\r
-    ( IDENTIFIER | STRING )\r
+    ( IDENTIFIER | LITERAL )\r
     { variable_accessor }*\r
     ;\r
 \r
@@ -148,19 +148,36 @@ comment_content         = {!comment_close CHAR}* ;
 \r
 content                 = !(block_open | variable_open | comment_open) CHAR ;\r
 \r
-STRING\r
+LITERAL\r
     =\r
-    SINGLE_QUOTE_STRING | DOUBLE_QUOTE_STRING\r
+    STRING_LITERAL | NUMBER_LITERAL\r
     ;\r
 \r
-SINGLE_QUOTE_STRING\r
+INTEGER_LITERAL\r
     =\r
-    "'" { !"'" ?'.' }* "'"\r
+    /[\d_]*\d+/\r
     ;\r
 \r
-DOUBLE_QUOTE_STRING\r
+NUMBER_LITERAL\r
     =\r
-    '"' { !'"' ?'.' }* '"'\r
+    whole:INTEGER_LITERAL\r
+    ["." fractional:INTEGER_LITERAL]\r
+    [ "e" exponent:[ ( "+" | "-" ) ] INTEGER_LITERAL ]\r
+    ;\r
+\r
+STRING_LITERAL\r
+    =\r
+    STRING_LITERAL_SINGLE_QUOTE | STRING_LITERAL_DOUBLE_QUOTE\r
+    ;\r
+\r
+STRING_LITERAL_SINGLE_QUOTE\r
+    =\r
+    "'" { !"'" /./ }* "'"\r
+    ;\r
+\r
+STRING_LITERAL_DOUBLE_QUOTE\r
+    =\r
+    '"' { !'"' /./ }* '"'\r
     ;\r
 \r
 IDENTIFIER\r
index 0e23daf7b3a9a2fd149648c6cd7dec47cbc3b9cc..caf840c79a30f0c5e060f38d6f547a217b31e758 100644 (file)
@@ -1,5 +1,5 @@
 {% with key=val.test %}\r
-{{ dict_var['single']["double"].dot  |test(first ,second, named=third)|filter | lastFilter}}\r
+{{ dict_var['single']["double"].dot  |test("first" ,2_000, named=3.14)|filter | lastFilter}}\r
 {%block single key=val param=value %}\r
 test {{var}}\r
 {%endblock%}\r