From e72d8835f8aa298b4584c59d2cd9816b62c85fc7 Mon Sep 17 00:00:00 2001 From: Funky Waddle Date: Mon, 24 Nov 2025 21:48:14 -0600 Subject: [PATCH] Add error/exception handling. Custom error types. Data conversion --- grammar/core/base_types.bnf | 7 +++++-- grammar/declarations/error_declarations.bnf | 7 +++++++ grammar/declarations/function_declarations.bnf | 5 +++++ grammar/operations/control_flow.bnf | 3 +++ grammar/operations/expressions.bnf | 5 ++++- grammar/operations/method_calls.bnf | 2 ++ 6 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 grammar/declarations/error_declarations.bnf diff --git a/grammar/core/base_types.bnf b/grammar/core/base_types.bnf index 382008a..8f2b50a 100644 --- a/grammar/core/base_types.bnf +++ b/grammar/core/base_types.bnf @@ -1,4 +1,4 @@ - ::= | | + ::= | | | ::= "String" | "Integer" | "Decimal" | "Boolean" @@ -6,6 +6,9 @@ ::= "<>" - ::= | "Runnable" + ::= + | "Runnable" + | + | "Any" ::= "[" ("," )* "]" | "Runnable" diff --git a/grammar/declarations/error_declarations.bnf b/grammar/declarations/error_declarations.bnf new file mode 100644 index 0000000..c71b2e8 --- /dev/null +++ b/grammar/declarations/error_declarations.bnf @@ -0,0 +1,7 @@ + ::= + ["/" ]? + "{" ? "}" + + ::= ( + | + | )* diff --git a/grammar/declarations/function_declarations.bnf b/grammar/declarations/function_declarations.bnf index 530ad8c..e68ac48 100644 --- a/grammar/declarations/function_declarations.bnf +++ b/grammar/declarations/function_declarations.bnf @@ -1,10 +1,15 @@ ::= "fn" + ["fails" "with" ]? "{" * "}" ::= "(" ? ")" "->" + ::= ("," )* + + ::= ["/" ]? + ::= ("," )* [("," )*] diff --git a/grammar/operations/control_flow.bnf b/grammar/operations/control_flow.bnf index 9f77e0a..a4f97ac 100644 --- a/grammar/operations/control_flow.bnf +++ b/grammar/operations/control_flow.bnf @@ -7,6 +7,7 @@ | | | + | ::= ".set(" ")" ";" @@ -35,3 +36,5 @@ ::= ".attempt" "{" * "}" ::= ("ok" | | "error") "{" * "}" + + ::= ".fail(" ["(" ? ")"]? ")" ";" diff --git a/grammar/operations/expressions.bnf b/grammar/operations/expressions.bnf index ce84c03..0c84e6c 100644 --- a/grammar/operations/expressions.bnf +++ b/grammar/operations/expressions.bnf @@ -3,9 +3,12 @@ | | | + | | "(" ")" | + ::= ".as(" ")" + ::= | "(" ")" @@ -28,4 +31,4 @@ | Boolean.gte(, ) | Boolean.lte(, ) - ::= ".define(" ")" + ::= ".define(" ")" \ No newline at end of file diff --git a/grammar/operations/method_calls.bnf b/grammar/operations/method_calls.bnf index ae13492..9f93717 100644 --- a/grammar/operations/method_calls.bnf +++ b/grammar/operations/method_calls.bnf @@ -1,8 +1,10 @@ ::= "." "(" ? ")" | ".sum()" + | ".as(" ")" ::= "set" | "define" + | "as" | "length" | "reverse" | "split" | "format" | "search" | "concat" | "replace" | "add" | "subtract" | "multiply" | "divide" | "idivide"