diff --git a/tatsu_grammar.txt b/tatsu_grammar.txt index c3b9a0f3..14ece898 100644 --- a/tatsu_grammar.txt +++ b/tatsu_grammar.txt @@ -83,8 +83,26 @@ variable_filter = {SP}* "|" {SP}* @:filter ; -filter = @+:IDENTIFIER [@+:filter_parameters]; -filter_parameters = "(" [@+:filter_parameter {"," {SP}* @+:filter_parameter}*] ")"; +filter = + @+:IDENTIFIER + [@+:filter_parameters] + ; + +filter_parameters + = + "(" + @:[filter_parameter_list] + ")" + ; +filter_parameter_list + = + @+:filter_parameter {filter_parameter_separator ~ @+:filter_parameter}* + ; + +filter_parameter_separator + = + {SP}* "," {SP}* + ; filter_parameter = {!"," !")" CHAR}* ; comment_expression = comment_open comment_content comment_close ; @@ -96,7 +114,7 @@ content = !(block_open | variable_open | comment_open) CHAR ; IDENTIFIER = - /[a-zA-Z]+/ + /[a-zA-Z][a-zA-Z0-9]*/ ; ALPHA diff --git a/test_template.jinja b/test_template.jinja index 17a4894e..0240e955 100644 --- a/test_template.jinja +++ b/test_template.jinja @@ -1,8 +1,10 @@ {% with key=val %} -{{ kkk |test(first,second, third)|filter}} +{{ kkk |test(first ,second, third)|filter | lastFilter}} {%block single key=val param=value %} test {{var}} {%endblock%} {# comment contents across lines #} -{% raw %}{% block %}fake content{{ fake vars }}{% endraw %} \ No newline at end of file +{% raw %} + {% block %}fake content{{ fake vars }} +{% endraw %} \ No newline at end of file