From e9e098cc48d5ab7efc464c1c614faf3e8d4248c2 Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Fri, 8 May 2020 08:15:31 -0400 Subject: [PATCH] Add integer and float literals These align with the one already supported by Jinja. --- tatsu_grammar.txt | 31 ++++++++++++++++++++++++------- test_template.jinja | 2 +- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/tatsu_grammar.txt b/tatsu_grammar.txt index 9adc5299..1144b864 100644 --- a/tatsu_grammar.txt +++ b/tatsu_grammar.txt @@ -76,7 +76,7 @@ variable_close variable_identifier = - ( IDENTIFIER | STRING ) + ( IDENTIFIER | LITERAL ) { variable_accessor }* ; @@ -148,19 +148,36 @@ comment_content = {!comment_close CHAR}* ; content = !(block_open | variable_open | comment_open) CHAR ; -STRING +LITERAL = - SINGLE_QUOTE_STRING | DOUBLE_QUOTE_STRING + STRING_LITERAL | NUMBER_LITERAL ; -SINGLE_QUOTE_STRING +INTEGER_LITERAL = - "'" { !"'" ?'.' }* "'" + /[\d_]*\d+/ ; -DOUBLE_QUOTE_STRING +NUMBER_LITERAL = - '"' { !'"' ?'.' }* '"' + whole:INTEGER_LITERAL + ["." fractional:INTEGER_LITERAL] + [ "e" exponent:[ ( "+" | "-" ) ] INTEGER_LITERAL ] + ; + +STRING_LITERAL + = + STRING_LITERAL_SINGLE_QUOTE | STRING_LITERAL_DOUBLE_QUOTE + ; + +STRING_LITERAL_SINGLE_QUOTE + = + "'" { !"'" /./ }* "'" + ; + +STRING_LITERAL_DOUBLE_QUOTE + = + '"' { !'"' /./ }* '"' ; IDENTIFIER diff --git a/test_template.jinja b/test_template.jinja index 0e23daf7..caf840c7 100644 --- a/test_template.jinja +++ b/test_template.jinja @@ -1,5 +1,5 @@ {% with key=val.test %} -{{ dict_var['single']["double"].dot |test(first ,second, named=third)|filter | lastFilter}} +{{ dict_var['single']["double"].dot |test("first" ,2_000, named=3.14)|filter | lastFilter}} {%block single key=val param=value %} test {{var}} {%endblock%} -- 2.47.3