From 9765308f5b70960b9f2b9297f41e29728319fc04 Mon Sep 17 00:00:00 2001 From: xonix Date: Sun, 30 Apr 2023 22:27:30 +0300 Subject: [PATCH] Autocomplete when if is not `closed` #133 : grammar_improve : AwkParserTestsAwkBook passes --- src/main/java/intellij_awk/Awk.bnf | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/intellij_awk/Awk.bnf b/src/main/java/intellij_awk/Awk.bnf index ea63abd..e81b42f 100644 --- a/src/main/java/intellij_awk/Awk.bnf +++ b/src/main/java/intellij_awk/Awk.bnf @@ -213,9 +213,27 @@ end_block ::= END action ::= LBRACE newlines_opt ( RBRACE // | (terminated_statement* (terminated_statement | unterminated_statement)) RBRACE - | terminated_statement* unterminated_statement* RBRACE +// | terminated_statement* unterminated_statement* RBRACE +// | (statement terminator)* statement? terminator? RBRACE + | (statement terminator*)* RBRACE //| unterminated_statement_list RBRACE - ) + ) // TODO pin 1 + +statement ::= action | statement_if | statement_for | statement_while | terminatable_statement | SEMICOLON newlines_opt + +private statement_if ::= + IF LPAREN expr RPAREN newlines_opt ( + statement terminator* [ ELSE newlines_opt statement ] + ) + +private statement_while ::= WHILE LPAREN expr RPAREN newlines_opt statement + +private statement_for ::= + FOR LPAREN ( + simple_statement_opt SEMICOLON newlines_opt expr_opt SEMICOLON newlines_opt simple_statement_opt RPAREN newlines_opt + | var_name IN gawk_var_name RPAREN newlines_opt + ) statement + private terminator ::= (NEWLINE|SEMICOLON) newlines_opt