From 4b52f663c6644838b7154ed0365abb809beed68f Mon Sep 17 00:00:00 2001 From: tocariimaa Date: Tue, 21 Jan 2025 18:16:47 -0300 Subject: [PATCH] grammar: specify expressions --- docs/grammar.abnf | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/grammar.abnf b/docs/grammar.abnf index 0517348..4677e66 100644 --- a/docs/grammar.abnf +++ b/docs/grammar.abnf @@ -16,11 +16,21 @@ funcargs = expr-list array-literal = "[" expr-list "]" -expr-list = expr *("," expr) [","] ; Allows a trailling comma -expr = number +; See `OperatorTable` at compiler/parse.c for the precedences +binary-operator = "+" / "-" / "*" / "/" / "<" / "<=" / ">" / ">=" / "==" / "!=" +unary-operator = "-" +ident-or-call = ident / function-call + +atom = number / array-literal - / function-call / string-literal + / ident-or-call + / "(" expr ")" + +unary = [unary-operator] atom +expr = unary [binary-operator expr] + +expr-list = expr *("," expr) [","] ; Allows a trailling comma pragma-directive = ident *("," ident) [","] pragma = "#" "[" pragma-directive "]"