11:35 26/10/2018 Support object operators
11:15 26/10/2018 Support extended 'with' syntax '..' (wths)
11:14 26/10/2018 Fix namespace names containing '::' (reco.bas instrevn)
11:21 26/10/2018 Support named enumeration dot members (enums)
11:10 26/10/2018 Trap attempted assignment to non-variables (not a variable)
11:10 26/10/2018 Fix higher types retval / retvar as pointer (typp)
11:09 26/10/2018 Support deferred destructors (epif)
11:09 26/10/2018 Fix lost arrays in types (tran.inc -8)
11:07 26/10/2018 Trap undefined types in C-style prototype (ert=406)
11:00 26/10/2018 Support wide string literals L"..." (utfs)
10:59 26/10/2018 Support UTF-8 and UTF-16 big-endian / little-endian (bom)
10:59 26/10/2018 Fix 64bit right() and mid() with negative offsets (RTL32 & RTL64 mids)
10:59 26/10/2018 Self-compiling 0.1.0 (7 Oct 2018) (final FB 6 Oct 2018)
11:05 20/10/2018 convert if block to case block (enco.bas sizeofregs)
11:01 20/10/2018 Fix integer comparator (expr.bas comparister)
08:44 20/10/2018 Rollback \inc\o2 to 06/10/2018
'objects in expressions
uses ..\rtlobjects
class cc
bstring b
method constructor(cc*v) {b=v : print "cc in " b}
method constructor(int v) {b=v : print "int " b}
method constructor(float v) {b=v : print "float " b}
method constructor(string v) {b=v : print "string " b}
method destructor(){print "cc destructor" : frees b}
'OPERATORS:
operator load (string*s){s=b} 'requires perfect match
operator load (cc*a){print "cc load" : a.b=b}
operator + (cc*a) {print "cc +" : a.b+=b}
end class
'#recordof cc
function foo(string a) as cc {print "foo cc" : return.b=a}
'TESTS:
=======
'
cc a,b,c
'a=b
'a=b+c
'a=foo("helo ")+foo("world")
a=b+("hello "+"world") 'not working yet
print a.b
taken by the gulls
$dll
$filename "oxygen.dll"
uses RTL32
uses main
$ o2version chr(34)+"0.1.0 2018-12-11T12:00:00"+chr(34)
'
'DEFINITIONS GROUP
'=================
'
uses glob 'GLOBAL STRUCTURES, CONSTANTS & VARIABLES
uses lexa 'LOW LEVEL LEXING
uses reco 'RECORDS
uses lang 'CORE KEYWORDS AND EQUATES
'
'PARSING GROUP
'=============
'
uses lexi 'LEXING
uses pars 'PARSING
'
'COMPILATION GROUP
'=================
'
uses meta 'META-PROGRAMMING
uses decl 'DECLARATIVES
uses enco 'ASM ENCODING FUNCTIONS
uses expl 'LOWER EXPRESSIONS
uses expr 'HIGHER EXPRESSIONS
uses tran 'TOP TRANSLATION LAYER
'
'HEADERS ASSEMBLY AND LINKAGE GROUP
'==================================
'
uses hdrs 'HEADERS FOR EXECUTABLE CODE
uses assm 'ASSEMBLER (TO O2 MACHINE SCRIPT)
uses link 'O2 MACHINE SCRIPT LINKER
'
Assistant: I did the calculation. And I recalculated it twice.
Boss: Well done.
Assistant: These are the three results.