compiler

Unnamed Compiled Systems Language Project
git clone http://frotz.net/git/compiler.git
Log | Files | Refs

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:
Mdocs/bnf.txt | 18++++++++++++------
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 ")"