This isn't necessary, we will always know that the second item within
the filter list is the set of filter parameters.
This also ensures that any time the filter separator is detected,
we force parsing the next token as a filter parameter.
=\r
{SP}* "|" {SP}* @:filter\r
;\r
-filter = @+:IDENTIFIER [@+:filter_parameters];\r
-filter_parameters = "(" [@+:filter_parameter {"," {SP}* @+:filter_parameter}*] ")";\r
+filter =\r
+ @+:IDENTIFIER\r
+ [@+:filter_parameters]\r
+ ;\r
+\r
+filter_parameters\r
+ =\r
+ "("\r
+ @:[filter_parameter_list]\r
+ ")"\r
+ ;\r
+filter_parameter_list\r
+ =\r
+ @+:filter_parameter {filter_parameter_separator ~ @+:filter_parameter}*\r
+ ;\r
+\r
+filter_parameter_separator\r
+ =\r
+ {SP}* "," {SP}*\r
+ ;\r
filter_parameter = {!"," !")" CHAR}* ;\r
\r
comment_expression = comment_open comment_content comment_close ;\r
\r
IDENTIFIER\r
=\r
- /[a-zA-Z]+/\r
+ /[a-zA-Z][a-zA-Z0-9]*/\r
;\r
\r
ALPHA\r
{% with key=val %}\r
-{{ kkk |test(first,second, third)|filter}}\r
+{{ kkk |test(first ,second, third)|filter | lastFilter}}\r
{%block single key=val param=value %}\r
test {{var}}\r
{%endblock%}\r
{# comment contents\r
across lines #}\r
-{% raw %}{% block %}fake content{{ fake vars }}{% endraw %}
\ No newline at end of file
+{% raw %}\r
+ {% block %}fake content{{ fake vars }}\r
+{% endraw %}
\ No newline at end of file