Hi Roland,
I'm glad you have found the examples useful. OxygenBasic has been developed, using code-challenges in the form of examples, rather than a set of abstract rules. So I am not sure BNF would be useful at this stage of development. Maybe when things have solidified a bit more.
What I find interesting is that a number a repeat coding patterns begin to emerge in the compiler source, which can be exploited to keep it all compact.
The hi-level aspect of the languages splits down into 26 internal meta-types (currently), with their own gramatic variations, as follows:
" >0 compund variable,"_
" 0 primitive variable or constant,"_
" -1 def macro,"_
" -2 enum enumeration, "_
" -3 type / class,"_
" -4 o2 intrinsic function,"_
" -5 proc sub or function,"_
" -6 imported sub or function,"_
" -7 vectored sub or function - declare ... AT v,"_
" -8 struct from typedef,"_
" -9 reserved word,"_
" -10 x86 register,"_
" -11 attributes,"_
" -12 (undefined),"_
" -13 o2 major keywords,"_
" -14 o2h major keywords,"_
" -15 C type keywords,"_
" -16 intrinsic functions,"_
" -17 intrinsic float macro,"_
" -18 labels,"_
" -19 termination macro,"_
" -20 high level macro,"_
" -21 literal number,"_
" -22 literal string,"_
" -23 unparsed declaration,"_
" -24 referenced declaration,"_
This means the compiler maintains ~26 different types of record, from which to generate code