\r
variable_expression\r
=\r
- variable_open type:`variable` name:variable_identifier { !variable_close filters+:variable_filter }* variable_close\r
+ variable_open type:`variable` name:variable_identifier { !variable_close {SP}* filters+:variable_filter }* variable_close\r
;\r
variable_open\r
=\r
\r
variable_filter\r
=\r
- {SP}* "|" {SP}* @:filter\r
+ "|" {SP}* @:filter\r
;\r
filter =\r
name:IDENTIFIER\r
from tatsu.util import asjson\r
import json\r
import tatsu\r
+from datetime import datetime\r
\r
\r
with open('tatsu_grammar.txt', 'r') as tatsu_grammar:\r
with open('test_template.jinja', 'r') as test_template:\r
- ast = tatsu.parse(tatsu_grammar.read(), test_template.read(), whitespace='')\r
+ grammar_start = datetime.now()\r
\r
- print(json.dumps(asjson(ast), indent=4))
\ No newline at end of file
+ grammar = tatsu.compile(tatsu_grammar.read())\r
+\r
+ grammar_end = datetime.now()\r
+\r
+ parse_start = datetime.now()\r
+\r
+ ast = grammar.parse(test_template.read(), whitespace='')\r
+\r
+ parse_end = datetime.now()\r
+\r
+ print(json.dumps(asjson(ast), indent=2))\r
+\r
+ print("Grammar", grammar_end - grammar_start)\r
+ print("Parser", parse_end - parse_start)
\ No newline at end of file