diff --git a/docs/ru/reference/grammar.ebnf b/docs/ru/reference/grammar.ebnf new file mode 100644 index 0000000..8a0beb9 --- /dev/null +++ b/docs/ru/reference/grammar.ebnf @@ -0,0 +1,61 @@ +/* FZL (FromZero Language) syntax */ +/* Version 1 */ +/* Authors: */ +/* - Samsonium (https://git.samsonium.dev/Samsonium) */ + + ::= <_> + + + ::= + | + | + | + | + | + +<_> ::= " "* + ::= " "+ + + ::= <_> ";" <_> + ::= "{" <_> * "}" <_> + ::= "return" ( )? <_> ";" <_> + + ::= "class" <_> "{" <_> ( | )* "}" <_> + ::= "fn" <_> "(" <_> ( (<_> "," <_> )*)? ")" <_> + ::= + + ::= "if" <_> "(" <_> <_> ")" <_> (<_> "else" )? + +/* Assign (lowest epxression priority, right-associative) */ + ::= + ::= (<_> "=" <_> )? + ::= ("new" ) | + ::= (<_> "||" <_> )* + ::= (<_> "&&" <_> )* + ::= (<_> <_> )* + ::= "==" | "!=" | "<=" | ">=" | "<" | ">" + + ::= (<_> ("+" | "-") <_> )* + ::= (<_> ("*" | "/" | "%") <_> )* + ::= (<_> "^" <_> )? + ::= (("!" | "-" | "+") <_>)* + +/* Postfix: chain of calls and dots */ + ::= ( | )* + ::= <_> "(" <_> ( (<_> "," <_> )*)? <_> ")" + ::= <_> "." <_> + + ::= + | + | "(" <_> <_> ")" + | + + ::= + + ::= "int" | "uint" | "bool" | "char" | "str" + | "i8" | "i16" | "i32" | "i64" + | "u8" | "u16" | "u32" | "u64" + + ::= | | "true" | "false" | "null" + ::= ([A-z] | "_") | ([A-z] | [0-9] | "_")* + ::= ('"' [^"]* '"') | ("'" [^']* "'") +