From 5895dc17adb0b13ec0d7ef90dde898b419b05997 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 18 May 2024 15:45:11 -0600 Subject: [PATCH 1/5] start --- esolang/pom.xml | 1 + esolang/whenever/README.md | 3 + esolang/whenever/desc.xml | 4 + esolang/whenever/examples/example1.txt | 10 ++ esolang/whenever/examples/example2.txt | 4 + esolang/whenever/examples/example3.txt | 1 + esolang/whenever/examples/example4.txt | 1 + esolang/whenever/examples/example5.txt | 1 + esolang/whenever/pom.xml | 56 ++++++++ esolang/whenever/whenever.g4 | 177 +++++++++++++++++++++++++ 10 files changed, 258 insertions(+) create mode 100644 esolang/whenever/README.md create mode 100644 esolang/whenever/desc.xml create mode 100644 esolang/whenever/examples/example1.txt create mode 100644 esolang/whenever/examples/example2.txt create mode 100644 esolang/whenever/examples/example3.txt create mode 100644 esolang/whenever/examples/example4.txt create mode 100644 esolang/whenever/examples/example5.txt create mode 100644 esolang/whenever/pom.xml create mode 100644 esolang/whenever/whenever.g4 diff --git a/esolang/pom.xml b/esolang/pom.xml index 00d3eefdc1..a071b75f28 100644 --- a/esolang/pom.xml +++ b/esolang/pom.xml @@ -22,5 +22,6 @@ sickbay snowball wheel + whenever diff --git a/esolang/whenever/README.md b/esolang/whenever/README.md new file mode 100644 index 0000000000..7794d3847b --- /dev/null +++ b/esolang/whenever/README.md @@ -0,0 +1,3 @@ +# whenever grammar + +[whenever](https://www.dangermouse.net/esoteric/whenever.html) diff --git a/esolang/whenever/desc.xml b/esolang/whenever/desc.xml new file mode 100644 index 0000000000..c9132c4941 --- /dev/null +++ b/esolang/whenever/desc.xml @@ -0,0 +1,4 @@ + + + CSharp;Cpp;Dart;Go;Java;JavaScript;Python3;TypeScript;Antlr4ng + diff --git a/esolang/whenever/examples/example1.txt b/esolang/whenever/examples/example1.txt new file mode 100644 index 0000000000..3f36a58898 --- /dev/null +++ b/esolang/whenever/examples/example1.txt @@ -0,0 +1,10 @@ +1 again (1) defer (3 || N(1)<=N(2) || N(7)>99) 2#N(1),3,7; +2 again (2) defer (3 || N(2)<=N(1) || N(7)>99) 1#N(2),3,7; +3 defer (5) print(N(1)+N(2)); +4 defer (5) print("1"); +5 4,-3,7; +6 defer (4) 3; +7 7; +8 defer (N(7)<100) -1#N(1),-2#N(2),-7#100,-3; +9 defer (3 || 6) 1,3; + diff --git a/esolang/whenever/examples/example2.txt b/esolang/whenever/examples/example2.txt new file mode 100644 index 0000000000..f2bad5068a --- /dev/null +++ b/esolang/whenever/examples/example2.txt @@ -0,0 +1,4 @@ +1 defer (4 || N(1) + 4.0.0 + whenever + jar + Whenever grammar + + org.antlr.grammars + esolangparent + 1.0-SNAPSHOT + + + + + org.antlr + antlr4-maven-plugin + ${antlr.version} + + ${basedir} + + whenever.g4 + + true + true + + + + + antlr4 + + + + + + com.khubla.antlr + antlr4test-maven-plugin + ${antlr4test-maven-plugin.version} + + false + false + program_ + whenever + + examples/ + + + + + test + + + + + + + diff --git a/esolang/whenever/whenever.g4 b/esolang/whenever/whenever.g4 new file mode 100644 index 0000000000..58ee8f2d15 --- /dev/null +++ b/esolang/whenever/whenever.g4 @@ -0,0 +1,177 @@ +/* +BSD License + +Copyright (c) 2024 Tom Everett +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Tom Everett nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false + + +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +grammar whenever; + +program_ + : line* EOF + ; + +line + : linenumber addremove? ugh* statement_list? ';' EOL + ; + +ugh + : again + | defer + | forget + ; + +defer + : 'defer' '(' expression ')' + ; + +again + : 'again' '(' expression ')' + ; + +forget + : 'forget' '(' expression ')' + ; + +linenumber + : term + ; + +addremove + : termlist '#' termlist + ; + +termlist + : term (',' term)* + ; + +statement_list + : statement (',' statement)* + ; + +statement + : print_statement + | read_statement + | decl_statement + ; + +decl_statement + : term (',' term)* + ; + +print_statement + : 'print' '(' term ')' + ; + +read_statement + : 'read' '(' ')' + ; + +expression + : term (COMPARE term)? + ; + +term + : NOT? mult_term + ; + +mult_term + : add_term (MULT_OP add_term)* + ; + +add_term + : value (ADD_OP value)* + ; + +value + : NUMBER + | func + | string_exp + ; + +func + : func_n + | func_u + ; + +func_n + : 'N' '(' term ')' + ; + +func_u + : 'U' '(' term ')' + ; + +string_exp + : QUOTED_STRING ('+' QUOTED_STRING)* + ; + +COMPARE + : '<' + | '>' + | '>=' + | '<=' + ; + +NOT + : '!' + ; + +MULT_OP + : '*' + | '/' + | '||' + | '&&' + ; + +ADD_OP + : '+' + | '-' + ; + +QUOTED_STRING + : '"' ~ '"'* '"' + ; + +NUMBER + : '-'? [0-9]+ + ; + +EOL + : [\r\n] + ; + +WHITESPACE + : [ \t]+ -> skip + ; + From 576622dc67ea0e758bce1cf06cf7dbbed2d2f0a5 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 18 May 2024 16:04:27 -0600 Subject: [PATCH 2/5] works --- esolang/whenever/whenever.g4 | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/esolang/whenever/whenever.g4 b/esolang/whenever/whenever.g4 index 58ee8f2d15..8cb902d5b4 100644 --- a/esolang/whenever/whenever.g4 +++ b/esolang/whenever/whenever.g4 @@ -38,11 +38,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. grammar whenever; program_ - : line* EOF + : line* EOL* EOF ; line - : linenumber addremove? ugh* statement_list? ';' EOL + : linenumber ugh* statement_list? ';' EOL ; ugh @@ -80,9 +80,7 @@ statement_list ; statement - : print_statement - | read_statement - | decl_statement + : addremove? (print_statement | read_statement | decl_statement)? ; decl_statement @@ -98,7 +96,7 @@ read_statement ; expression - : term (COMPARE term)? + : term (COMPARE term)* ; term @@ -116,7 +114,7 @@ add_term value : NUMBER | func - | string_exp + | QUOTED_STRING ; func @@ -132,15 +130,14 @@ func_u : 'U' '(' term ')' ; -string_exp - : QUOTED_STRING ('+' QUOTED_STRING)* - ; - COMPARE : '<' | '>' | '>=' | '<=' + | '==' + | '||' + | '&&' ; NOT @@ -150,8 +147,6 @@ NOT MULT_OP : '*' | '/' - | '||' - | '&&' ; ADD_OP From a11d749e66169685d89545cc3a597ec539ffdd4a Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 18 May 2024 16:08:27 -0600 Subject: [PATCH 3/5] remove go --- esolang/whenever/desc.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esolang/whenever/desc.xml b/esolang/whenever/desc.xml index c9132c4941..8c78fd02bf 100644 --- a/esolang/whenever/desc.xml +++ b/esolang/whenever/desc.xml @@ -1,4 +1,4 @@ - CSharp;Cpp;Dart;Go;Java;JavaScript;Python3;TypeScript;Antlr4ng + CSharp;Cpp;Dart;Java;JavaScript;Python3;TypeScript;Antlr4ng From a8b95518cfc60939b1bddb432adf8405027980d6 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 18 May 2024 16:15:28 -0600 Subject: [PATCH 4/5] fix --- esolang/whenever/whenever.g4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esolang/whenever/whenever.g4 b/esolang/whenever/whenever.g4 index 8cb902d5b4..4c3723faae 100644 --- a/esolang/whenever/whenever.g4 +++ b/esolang/whenever/whenever.g4 @@ -42,7 +42,7 @@ program_ ; line - : linenumber ugh* statement_list? ';' EOL + : linenumber ugh* statement_list ';' EOL ; ugh From cccb84eb11ee1a3bec2dcff75336d6cc42ada0d6 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 18 May 2024 17:22:37 -0600 Subject: [PATCH 5/5] underscores --- esolang/whenever/whenever.g4 | 90 ++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/esolang/whenever/whenever.g4 b/esolang/whenever/whenever.g4 index 4c3723faae..61cbfb0330 100644 --- a/esolang/whenever/whenever.g4 +++ b/esolang/whenever/whenever.g4 @@ -38,96 +38,96 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. grammar whenever; program_ - : line* EOL* EOF + : line_* EOL* EOF ; -line - : linenumber ugh* statement_list ';' EOL +line_ + : linenumber_ when_* statement_list_ ';' EOL ; -ugh - : again - | defer - | forget +when_ + : again_ + | defer_ + | forget_ ; -defer - : 'defer' '(' expression ')' +defer_ + : 'defer' '(' expression_ ')' ; -again - : 'again' '(' expression ')' +again_ + : 'again' '(' expression_ ')' ; -forget - : 'forget' '(' expression ')' +forget_ + : 'forget' '(' expression_ ')' ; -linenumber - : term +linenumber_ + : term_ ; -addremove - : termlist '#' termlist +addremove_ + : termlist_ '#' termlist_ ; -termlist - : term (',' term)* +termlist_ + : term_ (',' term_)* ; -statement_list - : statement (',' statement)* +statement_list_ + : statement_ (',' statement_)* ; -statement - : addremove? (print_statement | read_statement | decl_statement)? +statement_ + : addremove_? (print_statement_ | read_statement_ | decl_statement_)? ; -decl_statement - : term (',' term)* +decl_statement_ + : term_ (',' term_)* ; -print_statement - : 'print' '(' term ')' +print_statement_ + : 'print' '(' term_ ')' ; -read_statement +read_statement_ : 'read' '(' ')' ; -expression - : term (COMPARE term)* +expression_ + : term_ (COMPARE term_)* ; -term - : NOT? mult_term +term_ + : NOT? mult_term_ ; -mult_term - : add_term (MULT_OP add_term)* +mult_term_ + : add_term_ (MULT_OP add_term_)* ; -add_term - : value (ADD_OP value)* +add_term_ + : value_ (ADD_OP value_)* ; -value +value_ : NUMBER - | func + | func_ | QUOTED_STRING ; -func - : func_n - | func_u +func_ + : func_n_ + | func_u_ ; -func_n - : 'N' '(' term ')' +func_n_ + : 'N' '(' term_ ')' ; -func_u - : 'U' '(' term ')' +func_u_ + : 'U' '(' term_ ')' ; COMPARE