Skip to content

Grammar Rules

1.Program Structure

<program> ::= { <declaration> }*

2.Declarations:

<declaration> ::= <function-definition> | <pointer-definition> | <import-statement>

3.Function Definition:

<function-definition> ::= "funk" <function-name> "(" [ <parameter-list> ] ")" ":" <return-type> "{" <statement>* "}"

4.Parameter List:

<parameter-list> ::= <parameter> { "," <parameter> }*

5.Parameter:

<parameter> ::= <variable-name> ":" <data-type>

6.Pointer Definition:

<pointer-definition> ::= "var" <variable-name> ":" "*" <data-type> "=" "&" <variable-name> ";"

7.Import Statement:

<import-statement> ::= "include" <string-literal> ";"

8.Expressions:

<expression> ::= <variable-name> | <literal> | <binary-operation> | <unary-operation> | "(" <expression> ")"

9.Binary Operation:

<binary-operation> ::= <expression> <binary-operator> <expression>

10.Unary Operation:

<unary-operation> ::= <unary-operator> <expression>

11.Variables:

<pointer> ::= "*" <variable-name>

12.Pointers:

<pointer> ::= "*" <variable-name>

13.Data Types:

<data-type> ::= "i8" | "u8" | "i16" | "u16" | "i32" | "u32" | "i64" | "u64" | "f32" | "f64"