% O programming language specification Abstract -------- This document specifies the semantics and behavior of the O Programming Language for compiler designers be informed how the language is designed. This specification is a DRAFT and will be the discussions drive over olang-dev mailing list. Language Syntax --------------- This is the O Programming Language EBNF grammar specification[^1] [^1]: EBNF variant https://github.com/Engelberg/instaparse/tree/v1.4.12 and live test can be accessed here https://mdkrajnak.github.io/ebnftest/ NOTE: This grammar spec is a DRAFT and it covers only a small portion of the language. ``` (* Entry Point *) ::= ( ( | ))* (* Translation Unit *) ::= | (* Variables *) ::= 'var' ':' ? ::= 'const' ':' ::= ::= '=' (* Functions *) ::= 'fn' ':' ::= ::= '(' ')' ::= ::= ::= '{' ( )* ? '}' ::= | ::= 'return' (* Statements *) ::= ';' | ::= | | ::= ::= '=' (* Expressions *) ::= | (* Identifiers *) ::= 'u32' ::= ( | '_') ( | | '_')* (* Literals *) ::= | ::= #'[1-9]' ( | '_')* | '0' ::= #'0[Xx]' ( | '_')* (* Utilities *) ::= + ::= * ::= | ::= #'[\n\v\f\r]' | '\r\n' ::= #'[ \t]' ::= #'[a-zA-Z]' ::= #'[0-9]' ::= | #'[a-fA-F]' ::= #'$' ```