From: Kevin Date: Tue, 21 May 2024 18:21:20 +0000 (-0400) Subject: Testing out include syntax X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c164b0caa4dc4c9fe3b7405ae4d9533618bda8d;p=thirdparty%2Fjinja.git Testing out include syntax --- diff --git a/.gitignore b/.gitignore index 00a1e2a9..53aa2e03 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ htmlcov/ .tox/ docs/_build/ -.antlr/ \ No newline at end of file +.antlr/ +*.input.txt \ No newline at end of file diff --git a/grammar/JinjaGrammar.g4 b/grammar/JinjaGrammar.g4 index e82202d6..8f46b5b0 100644 --- a/grammar/JinjaGrammar.g4 +++ b/grammar/JinjaGrammar.g4 @@ -4,13 +4,27 @@ options { tokenVocab=JinjaLexer; } +start : expressions; + expression - : block_statement - | inline_statement + : inline_statement ; expressions : expression*; +statement_include_template_list + : STRING_LITERAL + ; + +statement_include_context + : STATEMENT_INCLUDE_WITH_CONTEXT + | STATEMENT_INCLUDE_WITHOUT_CONTEXT + ; + +statement_include + : STATEMENT_ID_INCLUDE (SP statement_include_template_list)? + ; + block_statement_id : STATEMENT_ID_BLOCK | STATEMENT_ID_SET @@ -30,15 +44,13 @@ block_statement_start_content | block_statement_with_parameters ; -inline_statement_id - : STATEMENT_ID_IMPORT - | STATEMENT_ID_INCLUDE - | STATEMENT_ID_SET +inline_statement_content + : statement_include ; -inline_statement : STATEMENT_OPEN inline_statement_id STATEMENT_CLOSE; +inline_statement : STATEMENT_OPEN inline_statement_content STATEMENT_CLOSE; -block_statement_start : STATEMENT_OPEN block_statement_id STATEMENT_CLOSE; +block_statement_start : STATEMENT_OPEN block_statement_start_content STATEMENT_CLOSE; block_statement_end : STATEMENT_OPEN END_STATEMENT_ID_PREFIX block_statement_id STATEMENT_CLOSE; block_statement : block_statement_start expressions block_statement_end; \ No newline at end of file diff --git a/grammar/JinjaLexer.g4 b/grammar/JinjaLexer.g4 index 3bfdabe9..0b8769db 100644 --- a/grammar/JinjaLexer.g4 +++ b/grammar/JinjaLexer.g4 @@ -61,8 +61,8 @@ RARROW : '->'; ELLIPSIS : '...'; EXCLAMATION : '!'; -STATEMENT_OPEN : '{%'; -STATEMENT_CLOSE : '%}'; +STATEMENT_OPEN : '{%' SP?; +STATEMENT_CLOSE : SP? '%}'; EXPRESSION_OPEN : '{{'; EXPRESSION_CLOSE : '}}'; @@ -70,9 +70,11 @@ EXPRESSION_CLOSE : '}}'; COMMENT_OPEN : '{#'; COMMENT_CLOSE : '#}'; -SP : [ \t\f]+; +STRING_LITERAL : STRING_LITERAL_SINGLE_QUOTE | STRING_LITERAL_DOUBLE_QUOTE; +fragment STRING_LITERAL_SINGLE_QUOTE : '\'' (~[\\\r\n"])* '\''; +fragment STRING_LITERAL_DOUBLE_QUOTE : '"' (~[\\\r\n"])* '"'; -IDENTIFIER : [a-zA-Z_][a-zA-Z0-9_]*; +SP : [ \t\f]+; // Statement identifiers for built-in statements @@ -82,4 +84,8 @@ STATEMENT_ID_INCLUDE : 'include'; STATEMENT_ID_RAW : 'raw'; STATEMENT_ID_SET : 'set'; +STATEMENT_INCLUDE_IGNORE_MISSING : 'ignore missing'; +STATEMENT_INCLUDE_WITH_CONTEXT : 'with context'; +STATEMENT_INCLUDE_WITHOUT_CONTEXT : 'without context'; + END_STATEMENT_ID_PREFIX : 'end'; \ No newline at end of file