From: Kevin Date: Tue, 21 May 2024 21:05:47 +0000 (-0400) Subject: Add initial support for block statements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fantlr-grammar;p=thirdparty%2Fjinja.git Add initial support for block statements We needed to add `end` versions of the block identifiers or else the lexer would identify them as generic tokens. --- diff --git a/grammar/JinjaGrammar.g4 b/grammar/JinjaGrammar.g4 index f9dda842..30f45d38 100644 --- a/grammar/JinjaGrammar.g4 +++ b/grammar/JinjaGrammar.g4 @@ -8,6 +8,7 @@ start : expressions; expression : inline_statement + | block_statement ; expressions : expression*; @@ -25,6 +26,11 @@ list_literal_value variable_name : IDENTIFIER; +statement_block + : + STATEMENT_ID_BLOCK SP IDENTIFIER + ; + statement_include_template : STRING_LITERAL | list_literal @@ -61,23 +67,23 @@ statement_import | STATEMENT_ID_FROM SP statement_import_file SP STATEMENT_ID_IMPORT SP statement_import_variable_list (SP statement_include_context)? ; -block_statement_id - : STATEMENT_ID_BLOCK - | STATEMENT_ID_SET +block_end_statement_id + : STATEMENT_END_ID_BLOCK + | STATEMENT_END_ID_SET ; -block_statement_with_parameters - : block_statement_id - | block_statement_id - ; +// block_statement_with_parameters +// : block_statement_id +// | block_statement_id +// ; block_statement_without_parameters - : block_statement_id + : statement_block ; block_statement_start_content : block_statement_without_parameters - | block_statement_with_parameters + // | block_statement_with_parameters ; inline_statement_content @@ -88,6 +94,6 @@ inline_statement_content inline_statement : STATEMENT_OPEN inline_statement_content 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_end : STATEMENT_OPEN block_end_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 ecc7e35e..6359539c 100644 --- a/grammar/JinjaLexer.g4 +++ b/grammar/JinjaLexer.g4 @@ -79,11 +79,13 @@ SP : [ \t\f]+; // Statement identifiers for built-in statements STATEMENT_ID_BLOCK : 'block'; +STATEMENT_END_ID_BLOCK : 'endblock'; STATEMENT_ID_FROM : 'from'; STATEMENT_ID_IMPORT : 'import'; STATEMENT_ID_INCLUDE : 'include'; STATEMENT_ID_RAW : 'raw'; STATEMENT_ID_SET : 'set'; +STATEMENT_END_ID_SET : 'endset'; STATEMENT_ID_IMPORT_AS : 'as';