somewhat upgraded version
https://filebin.net/pethf87gfgorfuz7
takes code like
//////////////////////////////
import "green_fire.dll" (cdecl) DrawSomeText2 ToggleFullscreen ...
ClearFrameData DrawCircle RegisterRunFrame RegisterMouseMove ...
RegisterKeyDown RegisterOnResize SetSleepValue SetScaleOnResize ...
SetupWindow3 (var) frame_size_x frame_size_y
import "user32.dll" (stdcall) MessageBoxA
import "msvcrt.dll" (cdecl) printf
void ProcessMouseMove(int mouse_x int mouse_y), return
void foo(int z1 int z2 int z3 int z4 )
printf " %d %d %d %d \x00" z1 z2 z3 z4, return
void AddBackgrounColor(int addX)
background_color = background_color + addX , return
void ProcessKeyDown(int last_key_pressed)
int PAGE_UP=33, int keyR = 0x52, int keyG = 0x47, int keyB = 0x42
last_key_pressed?=PAGE_UP: ToggleFullscreen().
last_key_pressed?=0x41: foo(frame_size_x frame_size_y/2 3 4).
last_key_pressed?=0x53: foo(2 3 4 5), foo(6 7 8 9).
last_key_pressed?=0x43: MessageBoxA 0 "captionC\x00" "title\x00" 0 .
last_key_pressed?=keyR: AddBackgrounColor(0x10).
last_key_pressed?=keyG: AddBackgrounColor(0x1000).
last_key_pressed?=keyB: AddBackgrounColor(0x100000).
return
void RollBackgroundColor(), int background_color += 0x01, ClearFrameData background_color,
return
double aa = 1111.111111111, double bb = 7.22, int cc = 2, int dd = 3
void RunFrame(),
RollBackgroundColor(),
30;.r;100;2: DrawCircle frame_size_x/4 frame_size_y/3 r 0xff4455 .
20; r;100;3: DrawCircle frame_size_x/5*4 frame_size_y/4 r 0xff00 .
10; r;70;2: DrawCircle frame_size_x/2 frame_size_y/5*4 r 0xffff00 .
20; r;200;2: DrawCircle mouse_x mouse_y r 0xffff .
DrawSomeText2 0xffffff 10 30 "this app is compiled by furia \x00",
DrawSomeText2 0xffffff 30 180 "mouse %d %d\x00" mouse_x mouse_y
cc+=1, aa+=0.01, aa-=0.00001,
DrawSomeText2 0xffffff 30 100 "cc %d aa %f \x00" cc aa,
return
void OnResize(), return
void main()
RegisterRunFrame &RunFrame, RegisterMouseMove &ProcessMouseMove
RegisterKeyDown &ProcessKeyDown, RegisterOnResize &OnResize, SetSleepValue 30, SetScaleOnResize 1
SetupWindow3 " compiled by fir's furia proto c compiler \x00" 20 20 640 480 320 240
return
now some can put expresions as argument of functions,,it doesnt seem a big upgrade but
in fact the core things in the inner layer/ring of compilers are those two: microcompiler of expressions and code that compiles-in this expressions in given place (here for me it is those arguments of functions)
those two things emmn most thing done, probably teh harded thing in thic compiler, so when i done it i may feel like 51% of compiler done
(my expresions are errorouns and simple (only +-*/) but extending it is easy work... sadly i myself feel like emeritus so harder parts was wearing me...its a doom of my life, need to do work when began to feel really old)