commit 2440b0ac7308e3944352ba650d38b5de77eb0a0a
parent b2f95fcfee40c82bdfb97ca10d1d40e69b21fb29
Author: Brian Swetland <swetland@frotz.net>
Date: Sun, 23 May 2021 20:35:14 -0700
docs: bnf: align with implementation
Diffstat:
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/docs/bnf.txt b/docs/bnf.txt
@@ -1,23 +1,29 @@
-program := { vardef | funcdef }
+program := { vardef ";" | funcdef ( ";" | block) | typedef ";" }
-vardef := "var" ident [ ":" type ] [ "=" <expr> ] ";"
+vardef := "var" ident [ ":" type ] [ "=" <expr> ]
-funcdef := "func" ident "(" [ paramdef { "," paramdef } ] ")" [ type ] ( ";" | block )
+funcdef := "func" ident "(" [ paramdef { "," paramdef } ] ")" [ type ]
paramdef := ident ":" type
-recorddef := "record" [ "(" qualident ")" ] "{" { fielddef } "}"
+structdef := "struct" [ "(" qualident ")" ] "{" { fielddef } "}"
fielddef := ident ":" type ","
-type := ident [ arraydef | "&"]
+arraydef := "[" integer { "," integer } "]" type
-arraydef := "[" [ integer { "," integer } ] "]"
+slicedef := "[" "]" type
+
+
+typedef := "type" ident type
+
+
+type := ident | slicedef | arraydef | structdef | structdef | funcdef
operand := literal | identifier | "(" expression ")"