From 384f9c719795a70259bf409ac57d221baf7a89b1 Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 11 Oct 2025 23:51:14 +0200 Subject: [PATCH] IF ELSE ENDIF --- Program.cs | 224 +++++++++++++----- bin/Debug/net8.0/Compiler.dll | Bin 12800 -> 14848 bytes bin/Debug/net8.0/Compiler.pdb | Bin 13972 -> 14872 bytes input.st | 15 +- obj/Debug/net8.0/Compiler.AssemblyInfo.cs | 4 +- .../net8.0/Compiler.AssemblyInfoInputs.cache | 2 +- obj/Debug/net8.0/Compiler.dll | Bin 12800 -> 14848 bytes obj/Debug/net8.0/Compiler.pdb | Bin 13972 -> 14872 bytes obj/Debug/net8.0/ref/Compiler.dll | Bin 7168 -> 7168 bytes obj/Debug/net8.0/refint/Compiler.dll | Bin 7168 -> 7168 bytes out.bin | Bin 64 -> 69 bytes 11 files changed, 173 insertions(+), 72 deletions(-) diff --git a/Program.cs b/Program.cs index ff2ad51..7f9e79c 100644 --- a/Program.cs +++ b/Program.cs @@ -21,47 +21,77 @@ class Program { } } -// === AST & TYPES === +// === AST === public enum VarType { Int8=1, Int16=2, Int32=3, Byte=4, Bool=5 } -public abstract class StNode{} -public class ProgramNode:StNode{ public List Vars=new(); public List Stmts=new(); } -public class VarDecl:StNode{ public string Name; public VarType Type; public Expr? Init; } -public abstract class Stmt:StNode{} -public class AssignStmt:Stmt{ public string Target; public Expr Expr; } -public abstract class Expr:StNode{} -public class IntExpr:Expr{ public int Value; public IntExpr(int v){Value=v;} } -public class VarExpr:Expr{ public string Name; public VarExpr(string n){Name=n;} } -public class BinaryExpr:Expr{ public Expr L; public Expr R; public TokType Op; public BinaryExpr(Expr l,TokType op,Expr r){L=l;Op=op;R=r;} } -// === LEXER === -public enum TokType { IDENT, INT, ASSIGN, SEMI, LPAREN, RPAREN, PLUS, MINUS, MUL, DIV, PROGRAM, VAR, END_VAR, END_PROGRAM, EOF } +public abstract class StNode {} +public class ProgramNode : StNode { public List Vars=new(); public List Stmts=new(); } +public class VarDecl : StNode { public string Name; public VarType Type; public Expr? Init; } + +public abstract class Stmt : StNode {} +public class AssignStmt : Stmt { public string Target; public Expr Expr; } +public class IfStmt : Stmt { public Expr Cond; public List ThenStmts=new(); public List ElseStmts=new(); } + +public abstract class Expr : StNode {} +public class IntExpr : Expr { public int Value; public IntExpr(int v){Value=v;} } +public class VarExpr : Expr { public string Name; public VarExpr(string n){Name=n;} } +public class BinaryExpr : Expr { public Expr L; public Expr R; public TokType Op; public BinaryExpr(Expr l, TokType op, Expr r){L=l;Op=op;R=r;} } + +// === TOKENIZER === +public enum TokType { + IDENT, INT, ASSIGN, SEMI, LPAREN, RPAREN, + PLUS, MINUS, MUL, DIV, + LT, GT, LE, GE, EQ, NEQ, + IF, THEN, ELSE, END_IF, + PROGRAM, VAR, END_VAR, END_PROGRAM, + EOF +} public class Token { public TokType Type; public string Text; public Token(TokType t,string s){Type=t;Text=s;} } + public class StLexer { private readonly string src; private int i; public StLexer(string s){src=s;} char Peek()=> i i");} + return new Token(TokType.LT,"<"); + } + if (Peek()=='>') { Next(); if (Peek()=='='){Next(); return new Token(TokType.GE,">=");} return new Token(TokType.GT,">"); } + if (Peek()=='=') { Next(); return new Token(TokType.EQ,"="); } + char c=Next(); return c switch { ';'=>new Token(TokType.SEMI,";"), @@ -81,53 +111,105 @@ public class StParser { StLexer lex; Token cur; public StParser(string s){lex=new StLexer(s);cur=lex.NextToken();} void Next()=>cur=lex.NextToken(); - void Expect(TokType t){if(cur.Type!=t)throw new Exception($"Expected {t}, got {cur.Type}");Next();} - public ProgramNode ParseProgram(){ + void Expect(TokType t){ if(cur.Type!=t) throw new Exception($"Expected {t}, got {cur.Type}"); Next(); } + + public ProgramNode ParseProgram() { var p=new ProgramNode(); Expect(TokType.PROGRAM); - if(cur.Type==TokType.IDENT) Next(); - if(cur.Type==TokType.VAR){ + if (cur.Type==TokType.IDENT) Next(); + if (cur.Type==TokType.VAR) { Next(); - while(cur.Type==TokType.IDENT) p.Vars.Add(ParseVarDecl()); + while (cur.Type==TokType.IDENT) p.Vars.Add(ParseVarDecl()); Expect(TokType.END_VAR); } - while(cur.Type!=TokType.END_PROGRAM&&cur.Type!=TokType.EOF) + while (cur.Type!=TokType.END_PROGRAM && cur.Type!=TokType.EOF) p.Stmts.Add(ParseStmt()); Expect(TokType.END_PROGRAM); return p; } - VarDecl ParseVarDecl(){ + + VarDecl ParseVarDecl() { string name=cur.Text; Expect(TokType.IDENT); string tname=cur.Text.ToLowerInvariant(); Expect(TokType.IDENT); - VarType vt=tname switch { - "int8"=>VarType.Int8,"int16"=>VarType.Int16,"int32"=>VarType.Int32, - "byte"=>VarType.Byte,"bool"=>VarType.Bool,_=>throw new Exception($"Unknown type {tname}") + VarType vt = tname switch { + "int8"=>VarType.Int8, "int16"=>VarType.Int16, "int32"=>VarType.Int32, + "byte"=>VarType.Byte, "bool"=>VarType.Bool, + _=>throw new Exception($"Unknown type {tname}") }; Expr? init=null; - if(cur.Type==TokType.ASSIGN){Next();init=ParseExpr();} + if (cur.Type==TokType.ASSIGN){ Next(); init=ParseExpr(); } Expect(TokType.SEMI); return new VarDecl{Name=name,Type=vt,Init=init}; } - Stmt ParseStmt(){ - if(cur.Type==TokType.IDENT){ - var n=cur.Text;Next();Expect(TokType.ASSIGN); - var e=ParseExpr();Expect(TokType.SEMI); + + Stmt ParseStmt() { + if (cur.Type==TokType.IF) return ParseIf(); + if (cur.Type==TokType.IDENT) { + var n=cur.Text; Next(); Expect(TokType.ASSIGN); + var e=ParseExpr(); Expect(TokType.SEMI); return new AssignStmt{Target=n,Expr=e}; } - throw new Exception($"Invalid stmt start {cur.Type}"); + throw new Exception($"Unexpected token in statement: {cur.Type}"); } - Expr ParseExpr(){return ParseAddSub();} - Expr ParseAddSub(){var l=ParseMulDiv();while(cur.Type==TokType.PLUS||cur.Type==TokType.MINUS){var op=cur.Type;Next();var r=ParseMulDiv();l=new BinaryExpr(l,op,r);}return l;} - Expr ParseMulDiv(){var l=ParsePrimary();while(cur.Type==TokType.MUL||cur.Type==TokType.DIV){var op=cur.Type;Next();var r=ParsePrimary();l=new BinaryExpr(l,op,r);}return l;} - Expr ParsePrimary(){ - if(cur.Type==TokType.INT){int v=int.Parse(cur.Text);Next();return new IntExpr(v);} - if(cur.Type==TokType.IDENT){string n=cur.Text;Next();return new VarExpr(n);} - if(cur.Type==TokType.LPAREN){Next();var e=ParseExpr();Expect(TokType.RPAREN);return e;} + + IfStmt ParseIf() { + Next(); // consume IF + var cond = ParseExpr(); + Expect(TokType.THEN); + var ifs = new IfStmt{Cond=cond}; + while(cur.Type!=TokType.ELSE && cur.Type!=TokType.END_IF) + ifs.ThenStmts.Add(ParseStmt()); + if (cur.Type==TokType.ELSE) { + Next(); + while(cur.Type!=TokType.END_IF) + ifs.ElseStmts.Add(ParseStmt()); + } + Expect(TokType.END_IF); + Expect(TokType.SEMI); + return ifs; + } + + Expr ParseExpr() => ParseCompare(); + + Expr ParseCompare() { + var l=ParseAddSub(); + while(cur.Type is TokType.LT or TokType.GT or TokType.LE or TokType.GE or TokType.EQ or TokType.NEQ) { + var op=cur.Type; Next(); + var r=ParseAddSub(); + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr ParseAddSub() { + var l=ParseMulDiv(); + while(cur.Type==TokType.PLUS||cur.Type==TokType.MINUS){ + var op=cur.Type;Next(); + var r=ParseMulDiv(); + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr ParseMulDiv() { + var l=ParsePrimary(); + while(cur.Type==TokType.MUL||cur.Type==TokType.DIV){ + var op=cur.Type;Next(); + var r=ParsePrimary(); + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr ParsePrimary() { + if (cur.Type==TokType.INT){int v=int.Parse(cur.Text);Next();return new IntExpr(v);} + if (cur.Type==TokType.IDENT){string n=cur.Text;Next();return new VarExpr(n);} + if (cur.Type==TokType.LPAREN){Next();var e=ParseExpr();Expect(TokType.RPAREN);return e;} throw new Exception($"Unexpected token {cur.Type}"); } } -// === BYTECODE EMITTER === +// === BYTECODE === public class BytecodeEmitter { List consts=new(); Dictionary syms=new(); List code=new(); class Symbol{public string Name;public VarType Type;public int Index;} @@ -135,19 +217,12 @@ public class BytecodeEmitter { public void Compile(ProgramNode p){ int idx=0; - // Pass 1: Definiere Variablen (ohne Init) foreach(var v in p.Vars) syms[v.Name]=new Symbol{Name=v.Name,Type=v.Type,Index=idx++}; - // Pass 2: Generiere Initialisierungscode - foreach(var v in p.Vars){ - if(v.Init!=null){ - EmitExpr(v.Init); - EmitByte(0x03); EmitU16((ushort)syms[v.Name].Index); - } - } + foreach(var v in p.Vars) + if(v.Init!=null){ EmitExpr(v.Init); EmitByte(0x03); EmitU16((ushort)syms[v.Name].Index); } - // Main-Code foreach(var s in p.Stmts) EmitStmt(s); @@ -155,25 +230,46 @@ public class BytecodeEmitter { } void EmitStmt(Stmt s){ - if(s is AssignStmt a){ - EmitExpr(a.Expr); - EmitByte(0x03); EmitU16((ushort)syms[a.Target].Index); + switch(s){ + case AssignStmt a: + EmitExpr(a.Expr); + EmitByte(0x03); EmitU16((ushort)syms[a.Target].Index); + break; + case IfStmt iff: + EmitExpr(iff.Cond); + EmitByte(0x20); // JZ (jump if zero) + int jzPos = code.Count; EmitU16(0); + foreach(var st in iff.ThenStmts) EmitStmt(st); + if (iff.ElseStmts.Count>0){ + EmitByte(0x21); // JMP unconditional + int jmpPos = code.Count; EmitU16(0); + PatchJump(jzPos, code.Count); + foreach(var st in iff.ElseStmts) EmitStmt(st); + PatchJump(jmpPos, code.Count); + } else { + PatchJump(jzPos, code.Count); + } + break; + default: + throw new Exception($"Unhandled stmt {s.GetType().Name}"); } } + void PatchJump(int pos,int target){ code[pos]=(byte)(target&0xFF); code[pos+1]=(byte)(target>>8); } + void EmitExpr(Expr e){ switch(e){ case IntExpr ie: int ci=AddConst(ie.Value); EmitByte(0x01); EmitU16((ushort)ci); break; case VarExpr ve: - if(!syms.ContainsKey(ve.Name)) - throw new Exception($"Unknown variable {ve.Name}"); int vi=syms[ve.Name].Index; EmitByte(0x02); EmitU16((ushort)vi); break; case BinaryExpr be: EmitExpr(be.L); EmitExpr(be.R); EmitByte(be.Op switch { TokType.PLUS=>0x10, TokType.MINUS=>0x11, TokType.MUL=>0x12, TokType.DIV=>0x13, - _=>throw new Exception("bad op") + TokType.LT=>0x14, TokType.GT=>0x15, TokType.LE=>0x16, TokType.GE=>0x17, + TokType.EQ=>0x18, TokType.NEQ=>0x19, + _=>throw new Exception($"Bad op {be.Op}") }); break; default: throw new Exception("bad expr"); diff --git a/bin/Debug/net8.0/Compiler.dll b/bin/Debug/net8.0/Compiler.dll index 2a71ec9b0a9837a08d7de8e382b7b042cd9a30c6..0e2dcacc553dab8a9afc4102140b3ca144914265 100644 GIT binary patch literal 14848 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 literal 12800 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 diff --git a/bin/Debug/net8.0/Compiler.pdb b/bin/Debug/net8.0/Compiler.pdb index da6d3da48cbd3b37f166823965c5779258e35646..46d6a886edcaee59bc07190536811f48caff2237 100644 GIT binary patch delta 3802 zcmZ`+du*IX5ucs=?z``N_C4&}`F%d0FBiYgK0lJyZWHIxB;?g3N)4qZB#vVn6F<^A zATDY7zH^+YN-L4{LW>B9q(xP!+5jpQR0z2=P@y!Dpp{BmBotIsMNs}}1*ISmzgd4y zFOfKT=G))S?CkFB%nCRp06SyVKlq^Ukxl16s#WgLWH6SEFM_8}Z9*aH3{ldWA=jt;-OtTdD=if}pbvLbv4I9h}+0mpz#-0^=0 zt^^Lc_+k<6MtcLO3i7a)+eELSqZ%FM?f?V~)fC|`xVQpx1cZ);TF9fW{sZU}94nI7 z0av+l*|p&6B6&SQ6I=&{t!Ov6xE}Zs-ImB>kOZe3pXl6*6Sv{U zB8+e#!3`L1i+k6Dq$A-@AfYX|5%^=YMJEZIbSFFm14~$z@C_F?L7o8aclA@i+B>d% zIq;K^E!j(xvgsXk9Crt-fI=;lMWG23HUrB~QY%%2521Sri^hbDTcMu?77vQN4R{dk zP8YWW&!hbZ&~nH#g#47BtVVIPR1h|L#z)^odULa|G9=uGqN$*bbK}JceFin7abZU99 zA1Qn_;DiJdoz1%4rrY8Lrh!{}F#qjcOFfFFplWENrfc*;ZDO%sxKA&Rw3C(In}n?_ zdOx_OeN&>_i-)4%C9yC5@E{`q4eU*Ri!RxQmZBMOrgh+k_Jm23g*Utd_6Fsl`_(1Q z6Kv9+RtNm8*7M+N+g=5Kv+X)~rky+{U1(nm{_pnv;9D~e_>-CQ;K7cBVbU8NYr$Xa zbimJK&x8LiOJ0+{jmrVQVVXTaBQ!EIeUJ`}(!?konJyWg8l|rSjExoM%;uVjv00j$ zr7uq%-Zg{IQQ;HQ6Gv#a@FTOT@N4s2;%`HlvyG?E9`hdl&r{Kb?XQ10H~!9Znc-`_ z&))yr_x?IGUT}QZ6TwIS{Fj%4=f3-J;rWLnFI&+QkN@l4t8d=e^4MMX`X{r4|9Hu< zUQB1}mIsjX>jPL^vN0P#25yR?9Zhxl;4)koDDKh7$^)pjKa5xX>B3S5=s}xoYmH$X`V0slGVEoXN*EKGcHMs52glNTtQM zky7Qf!q|(`7Ar`ITJA&XL>=XWK_o^!BnB;$!d@o~fbwxladU_goC~34g{WCr1J8u0 zk&O+)al16J5uzl2B}moQK17Fs33_FML3e`wAfjxumb5eSAZ+EZI8jR$MzT$Im>0G! zbzrwV?xQeEofMUXyZ<0ds!+mf&1ag?I-aW#^}yZ;dG@kK(1A<8_LnJXDH%vE8B;9*m%MpJf=F@fdq4 z4XYcdlxMxj{|;eUFJKcGwR@?Zw?(iz!#FkzMGu8bu)2C(I1DM;{jP^26qX&QWUi1! zS$zv~F09JcX62kw`FY~}Q!%v#+XId%s^)RM?+EplA~JXAt!jfIi3J}ee0V>EEyVF| z3zvM_q7^(;N$ZW=9RzQba=^wB4ybA6JWpdNv&uOKyE@7$ku6vWoReUwYq(^^Z+&(S zSCWTn4XJ$M^E+k0ZtZie(O~CL)DfNr+zl&!v0_ocb#X{#)FF0Gv-4lh-;Mb(l7h|) z)$5R0%DGsrkZHr(oMPuPLVyv^B6n7P|o`>gO`?bErD+X zl{nWnNC&=S&S|8*a^6L%mGDL>mxcFx;;YS3g}W;WnVjK_AG=;ECkcfoun|P=V&W7f zS(>bM_Q|$cE%vY#xA(rJNfz3dy$*B^rOYM42K+ zxQs#)F=d>VKPsbKuITnlNR?86vX+FMLT^e(r%6+OfNnpO_v*Q8cmzI@oU-BE z5D)sLc9dakw*?38tbhRs|G$Aak1Sh^G}y%TqA=-hv02$7|-K_V~$^|Bn(} z62PkW#iXwMTy-kv8I`YIwl{!>C@%9DZKwYM^FEh{ delta 2942 zcmZWrZEPH85uSN>y?f_7?|s<5JNxYO`h30IhkbS9U@jzz)1-|R8aqiH)3i}=oZuu* zo4ATol0$^sYuc(2Ad+s>q$rhu2IvnOK|zG75)L8~jR2vx^asC)`1n^52`CB_37%Q6 zo1?5e<9TM@uX*R=y-O!996h(D{(KA3z?X=gFo<>&HStP*h&PM z20(F81(XNHh%B0b&;hbRk@G(ri;3kvP!Xg+DL2MrbqH7^TwuzAs-WGVMbKH$InYJW zyG5qIfIa{vOH5w_Wy?&5L0<&j1SJNUE`TnBu7JJ=+B<|bK;sprlb|~2MbK_|DElh+ z_uShS#CcjgPl%#!Q1#U_u!ftoN#M3790j(TZ~-{dghzm*P53Gt7HnXbJ+Qsw+XKKG zaE0rEW3UI8Pf_=-F@9I!U2l66ejF1zn()toJAqq$H$DJP09!u(Y7=gUd_O1&d(^jw zfm0u0MCCDG5yJq4neG8~VL-b-LA(&$(PZxiPWbkBVPC_sWL&wt#Hl z46v7#>!4pz$dI)@wlP5BD;|lxA6P1E#>ZLUYmiTY`e7dcmQP}w13>QXjcx z?CnoGFi#Y#Fkuo#IkDgZ@KsM<#zkO>wfS8FpS24belPu}#qZpn{Jwi7aLfMOc;EIM^aL+cR+fS~47K0>yt zMIZ$tR1lU`k6YAb%(hiz5EIHctse2$s#+-Dt!-i%l-3i~YdD7tv)xzk8_+GaG~qtB z`oVgcpJ5eJ>l3U_vGW6N6qWN{uCYbo@9E$0)BjRuGV07Fb>?;HLg-u%x5&Y<8JcPs z`IVPGSCEQmpNjY5w7e_L($Z0M8hwH?6Y%ticV(JVbQrHIPv@CZYTTeyMSM&vjK^S; zswQ=*ttdxrc@NWfD6KZc5xLFozL8{oUA>07(Wytr+@SXWshY(RHKA(C`H^bm6YMxR z5g))wI@R7Vdh1|-ifTFrX;(ng)sUvmQWkOAOks7h1y9tVuu2QyDljUw&>-1(k2Os{ z-G_l1MUg28N?qE8++@|yh}d#QV6{$_4A8LG2~{o1aUN&qJU5P$YCM}@i8C*BN|@$7 zf0;&cQ)(&<&od?(ycIwiOq(e7TtKoUL8E%@lf- z;QNs%d@9L^2T~NrWO6QGtb_gLm>_mGBp< zVKHp5ve>!1i`C_P-fAU(wGmp1^!uy*{iD^k^FftN@Db!ae<8&P>;d0v8~_hm3@2M- zA|O^6HxjygBY3^rV9R;7R@`{?!1L4 zp-<$gvT kP6twZwftVHINwB=*?H4_Xzg|DnU)Y<-Qf^YU>nhY0WkPEo&W#< diff --git a/input.st b/input.st index 2bbe478..d5c320a 100644 --- a/input.st +++ b/input.st @@ -1,9 +1,14 @@ PROGRAM Demo VAR - a int16 := 5; - b byte := a + 3; - c int32 := b * 2; + a int16 := 3; + b int16 := 5; + c int16; END_VAR -a := a + c; -END_PROGRAM \ No newline at end of file +IF a < b THEN + c := b - a; +ELSE + c := a - b; +END_IF; + +END_PROGRAM diff --git a/obj/Debug/net8.0/Compiler.AssemblyInfo.cs b/obj/Debug/net8.0/Compiler.AssemblyInfo.cs index dd07c32..a354224 100644 --- a/obj/Debug/net8.0/Compiler.AssemblyInfo.cs +++ b/obj/Debug/net8.0/Compiler.AssemblyInfo.cs @@ -13,10 +13,10 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Compiler")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0e549b6e0a943de51ec80a7d726000f16f5498dd")] [assembly: System.Reflection.AssemblyProductAttribute("Compiler")] [assembly: System.Reflection.AssemblyTitleAttribute("Compiler")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -// Generated by the MSBuild WriteCodeFragment class. +// Von der MSBuild WriteCodeFragment-Klasse generiert. diff --git a/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache b/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache index e7d5643..b9fa331 100644 --- a/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache +++ b/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache @@ -1 +1 @@ -595ce70373ddd00c09969aa302b9639c0cb84849045f0786c137462a6cbd7825 +f8051df38f7774448e56868f6a91a5557659f77e4a8558098bdfd3e3ba758ea4 diff --git a/obj/Debug/net8.0/Compiler.dll b/obj/Debug/net8.0/Compiler.dll index 2a71ec9b0a9837a08d7de8e382b7b042cd9a30c6..0e2dcacc553dab8a9afc4102140b3ca144914265 100644 GIT binary patch literal 14848 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 literal 12800 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 diff --git a/obj/Debug/net8.0/Compiler.pdb b/obj/Debug/net8.0/Compiler.pdb index da6d3da48cbd3b37f166823965c5779258e35646..46d6a886edcaee59bc07190536811f48caff2237 100644 GIT binary patch delta 3802 zcmZ`+du*IX5ucs=?z``N_C4&}`F%d0FBiYgK0lJyZWHIxB;?g3N)4qZB#vVn6F<^A zATDY7zH^+YN-L4{LW>B9q(xP!+5jpQR0z2=P@y!Dpp{BmBotIsMNs}}1*ISmzgd4y zFOfKT=G))S?CkFB%nCRp06SyVKlq^Ukxl16s#WgLWH6SEFM_8}Z9*aH3{ldWA=jt;-OtTdD=if}pbvLbv4I9h}+0mpz#-0^=0 zt^^Lc_+k<6MtcLO3i7a)+eELSqZ%FM?f?V~)fC|`xVQpx1cZ);TF9fW{sZU}94nI7 z0av+l*|p&6B6&SQ6I=&{t!Ov6xE}Zs-ImB>kOZe3pXl6*6Sv{U zB8+e#!3`L1i+k6Dq$A-@AfYX|5%^=YMJEZIbSFFm14~$z@C_F?L7o8aclA@i+B>d% zIq;K^E!j(xvgsXk9Crt-fI=;lMWG23HUrB~QY%%2521Sri^hbDTcMu?77vQN4R{dk zP8YWW&!hbZ&~nH#g#47BtVVIPR1h|L#z)^odULa|G9=uGqN$*bbK}JceFin7abZU99 zA1Qn_;DiJdoz1%4rrY8Lrh!{}F#qjcOFfFFplWENrfc*;ZDO%sxKA&Rw3C(In}n?_ zdOx_OeN&>_i-)4%C9yC5@E{`q4eU*Ri!RxQmZBMOrgh+k_Jm23g*Utd_6Fsl`_(1Q z6Kv9+RtNm8*7M+N+g=5Kv+X)~rky+{U1(nm{_pnv;9D~e_>-CQ;K7cBVbU8NYr$Xa zbimJK&x8LiOJ0+{jmrVQVVXTaBQ!EIeUJ`}(!?konJyWg8l|rSjExoM%;uVjv00j$ zr7uq%-Zg{IQQ;HQ6Gv#a@FTOT@N4s2;%`HlvyG?E9`hdl&r{Kb?XQ10H~!9Znc-`_ z&))yr_x?IGUT}QZ6TwIS{Fj%4=f3-J;rWLnFI&+QkN@l4t8d=e^4MMX`X{r4|9Hu< zUQB1}mIsjX>jPL^vN0P#25yR?9Zhxl;4)koDDKh7$^)pjKa5xX>B3S5=s}xoYmH$X`V0slGVEoXN*EKGcHMs52glNTtQM zky7Qf!q|(`7Ar`ITJA&XL>=XWK_o^!BnB;$!d@o~fbwxladU_goC~34g{WCr1J8u0 zk&O+)al16J5uzl2B}moQK17Fs33_FML3e`wAfjxumb5eSAZ+EZI8jR$MzT$Im>0G! zbzrwV?xQeEofMUXyZ<0ds!+mf&1ag?I-aW#^}yZ;dG@kK(1A<8_LnJXDH%vE8B;9*m%MpJf=F@fdq4 z4XYcdlxMxj{|;eUFJKcGwR@?Zw?(iz!#FkzMGu8bu)2C(I1DM;{jP^26qX&QWUi1! zS$zv~F09JcX62kw`FY~}Q!%v#+XId%s^)RM?+EplA~JXAt!jfIi3J}ee0V>EEyVF| z3zvM_q7^(;N$ZW=9RzQba=^wB4ybA6JWpdNv&uOKyE@7$ku6vWoReUwYq(^^Z+&(S zSCWTn4XJ$M^E+k0ZtZie(O~CL)DfNr+zl&!v0_ocb#X{#)FF0Gv-4lh-;Mb(l7h|) z)$5R0%DGsrkZHr(oMPuPLVyv^B6n7P|o`>gO`?bErD+X zl{nWnNC&=S&S|8*a^6L%mGDL>mxcFx;;YS3g}W;WnVjK_AG=;ECkcfoun|P=V&W7f zS(>bM_Q|$cE%vY#xA(rJNfz3dy$*B^rOYM42K+ zxQs#)F=d>VKPsbKuITnlNR?86vX+FMLT^e(r%6+OfNnpO_v*Q8cmzI@oU-BE z5D)sLc9dakw*?38tbhRs|G$Aak1Sh^G}y%TqA=-hv02$7|-K_V~$^|Bn(} z62PkW#iXwMTy-kv8I`YIwl{!>C@%9DZKwYM^FEh{ delta 2942 zcmZWrZEPH85uSN>y?f_7?|s<5JNxYO`h30IhkbS9U@jzz)1-|R8aqiH)3i}=oZuu* zo4ATol0$^sYuc(2Ad+s>q$rhu2IvnOK|zG75)L8~jR2vx^asC)`1n^52`CB_37%Q6 zo1?5e<9TM@uX*R=y-O!996h(D{(KA3z?X=gFo<>&HStP*h&PM z20(F81(XNHh%B0b&;hbRk@G(ri;3kvP!Xg+DL2MrbqH7^TwuzAs-WGVMbKH$InYJW zyG5qIfIa{vOH5w_Wy?&5L0<&j1SJNUE`TnBu7JJ=+B<|bK;sprlb|~2MbK_|DElh+ z_uShS#CcjgPl%#!Q1#U_u!ftoN#M3790j(TZ~-{dghzm*P53Gt7HnXbJ+Qsw+XKKG zaE0rEW3UI8Pf_=-F@9I!U2l66ejF1zn()toJAqq$H$DJP09!u(Y7=gUd_O1&d(^jw zfm0u0MCCDG5yJq4neG8~VL-b-LA(&$(PZxiPWbkBVPC_sWL&wt#Hl z46v7#>!4pz$dI)@wlP5BD;|lxA6P1E#>ZLUYmiTY`e7dcmQP}w13>QXjcx z?CnoGFi#Y#Fkuo#IkDgZ@KsM<#zkO>wfS8FpS24belPu}#qZpn{Jwi7aLfMOc;EIM^aL+cR+fS~47K0>yt zMIZ$tR1lU`k6YAb%(hiz5EIHctse2$s#+-Dt!-i%l-3i~YdD7tv)xzk8_+GaG~qtB z`oVgcpJ5eJ>l3U_vGW6N6qWN{uCYbo@9E$0)BjRuGV07Fb>?;HLg-u%x5&Y<8JcPs z`IVPGSCEQmpNjY5w7e_L($Z0M8hwH?6Y%ticV(JVbQrHIPv@CZYTTeyMSM&vjK^S; zswQ=*ttdxrc@NWfD6KZc5xLFozL8{oUA>07(Wytr+@SXWshY(RHKA(C`H^bm6YMxR z5g))wI@R7Vdh1|-ifTFrX;(ng)sUvmQWkOAOks7h1y9tVuu2QyDljUw&>-1(k2Os{ z-G_l1MUg28N?qE8++@|yh}d#QV6{$_4A8LG2~{o1aUN&qJU5P$YCM}@i8C*BN|@$7 zf0;&cQ)(&<&od?(ycIwiOq(e7TtKoUL8E%@lf- z;QNs%d@9L^2T~NrWO6QGtb_gLm>_mGBp< zVKHp5ve>!1i`C_P-fAU(wGmp1^!uy*{iD^k^FftN@Db!ae<8&P>;d0v8~_hm3@2M- zA|O^6HxjygBY3^rV9R;7R@`{?!1L4 zp-<$gvT kP6twZwftVHINwB=*?H4_Xzg|DnU)Y<-Qf^YU>nhY0WkPEo&W#< diff --git a/obj/Debug/net8.0/ref/Compiler.dll b/obj/Debug/net8.0/ref/Compiler.dll index 4bf2c326c9ce6d3cf10aa54518ff212b78aa4331..a29029ab32543deff8194ee6196f5e8b2a159a28 100644 GIT binary patch delta 2392 zcmZXWdu&rx9LK-s+;Z2!*0tTnTX|I7%wV=-k4{|NGRml|TUiGQO2Wq0@h-~t2Z>6@ zLq$Ri+ckvv3J8fxP%#5kB4~)uh*6^;(GX(rMFbxSiijG&=eLrv(B^*b_xt;u*S+VQ zdv9;JH@tm|>${PcclT|ZsQ--h?OWj48v~lbUmLJnvrskb ze{!9D>Nd4=;B$3{_E!Az)#O7L`)hX`j+UOe^vcBnpX*mO9;aEw{O0h`7=hMWpgb2) zY^KVI+r>2}Y#^{62xkEWF6u2I7+r5P{-|3CxP)ciB>J7YD}8XK5< zpRO8Nbc*hXl+S`CZa3?BkLwba6;c9InM@bvcS}%|XtXIjCc%8h&GB)0|j*v$!6R8({hZrO z?gmSyuT>nL9PVyx)GXAY?!8=^L+&_dc*vdL@Q0ii?rRR;=r53+zGgXYvyL-Gaa^C~ z^2<2)Pu7|1+&9BqzrHSqPw?$fNw{4rFTw~G#uUhV|LI$=~ePq`Q#SdOK!tray#2_ z<4G(hcOpeTgKlycYrC-*50fuqBe@@skq6SO=*B_xk#ArJ`4*l=5jya(D&-CQ4W-EE z6S5Q&FqV-3|D`Cw6zUmROwPn=vL5Tmxp;(3Nc=u>4_4w$vK#LyOBrn`qossJNt zb26cJ@@=(A3T=|e9?^S5pA&sfw56pXZE6KX2SnG4t{2@w{hq3`O*eis>9}BBAkPYS z=nI@=^KjB``1t_U$ang33Pb;LCAiH#%lyXUYf-~vTe&*GyW$6&lR3AxH$>1FL8LK3 zG|gHZosCHIY$PJFC}Q&)B^GaKZfL2Cp>t zjeN(&qD^E&D;is!J9Eoi^=nd{11odS>uHfy-N{7H>Yi@2E=#5cRr8V+$&Mbhwy#~9 z>_IfOoakc8S?Rs!hWD}ap*OX{mB)*4nYXCRXTYn0%e+2a1qOu%qYccf)HRmSw%f9O zIazk0KdSs=Gv|rg_E@&Rn5l5~WJ~#rePMsGJy|PX*yEZE|6NYX_j1_`h0;)Iuryc_ zOjeXvFR4rh+pEiGbS5i8$&PTay{faStTGr3c7-atm=AY$I=A?5cjA7p=S1eafkVI# zF(>68uTRIEt^QiaQ;-_Hm$R|Gjo%A0E2fOmPJh93s>cZx26S8xEGX<()<)dn{5-lO zQGy_nsNiQpHI|@~I*4}aaxUmj$%M!bge6|ZSQYnTC7td*i)k79;F+9n zuYaw5S+n;#=OlM0cTb)5+_?1SBHEo?`r$J{x) zt|CCSiFY|~I^pA8$~)xVv#S#0TG0k5B>oJkkrX?Zzi5`QrQj!RRFH+J6}y3S%rizd3){%BgC|5B6P^ciBFk)m({7;dW zaT+Jc5ezVUV_VAD)#M3vitJOp;_nszxY*-jXT;8keMjs&Vq03~(IZFkqjt=izuud3M89&PSC(1FgSra2aCJJ^8(9W5t&nmZ9~=jY(@wvO(YTjJZ6ZuR}4 z-9~?fd)$90$eAAg61lVfA-5|~wXVjp{W}UmmI~DPcLZwekXHU3K2HdN-R@-IYC)kw zUPFDPKH{DZ*1D-+FmN{e^)g9+XzZp`b-A8ycW(uo(h=RFTwm!>d6fB2#esSL+xyqN zcF&i-uR?A^Sy=z8(miG8l@)>Q{#9P*4y=Au#nT_JKCaz}?kZ?n`nt|G$~Q9=$^Q>E Cj4s~* diff --git a/obj/Debug/net8.0/refint/Compiler.dll b/obj/Debug/net8.0/refint/Compiler.dll index 4bf2c326c9ce6d3cf10aa54518ff212b78aa4331..a29029ab32543deff8194ee6196f5e8b2a159a28 100644 GIT binary patch delta 2392 zcmZXWdu&rx9LK-s+;Z2!*0tTnTX|I7%wV=-k4{|NGRml|TUiGQO2Wq0@h-~t2Z>6@ zLq$Ri+ckvv3J8fxP%#5kB4~)uh*6^;(GX(rMFbxSiijG&=eLrv(B^*b_xt;u*S+VQ zdv9;JH@tm|>${PcclT|ZsQ--h?OWj48v~lbUmLJnvrskb ze{!9D>Nd4=;B$3{_E!Az)#O7L`)hX`j+UOe^vcBnpX*mO9;aEw{O0h`7=hMWpgb2) zY^KVI+r>2}Y#^{62xkEWF6u2I7+r5P{-|3CxP)ciB>J7YD}8XK5< zpRO8Nbc*hXl+S`CZa3?BkLwba6;c9InM@bvcS}%|XtXIjCc%8h&GB)0|j*v$!6R8({hZrO z?gmSyuT>nL9PVyx)GXAY?!8=^L+&_dc*vdL@Q0ii?rRR;=r53+zGgXYvyL-Gaa^C~ z^2<2)Pu7|1+&9BqzrHSqPw?$fNw{4rFTw~G#uUhV|LI$=~ePq`Q#SdOK!tray#2_ z<4G(hcOpeTgKlycYrC-*50fuqBe@@skq6SO=*B_xk#ArJ`4*l=5jya(D&-CQ4W-EE z6S5Q&FqV-3|D`Cw6zUmROwPn=vL5Tmxp;(3Nc=u>4_4w$vK#LyOBrn`qossJNt zb26cJ@@=(A3T=|e9?^S5pA&sfw56pXZE6KX2SnG4t{2@w{hq3`O*eis>9}BBAkPYS z=nI@=^KjB``1t_U$ang33Pb;LCAiH#%lyXUYf-~vTe&*GyW$6&lR3AxH$>1FL8LK3 zG|gHZosCHIY$PJFC}Q&)B^GaKZfL2Cp>t zjeN(&qD^E&D;is!J9Eoi^=nd{11odS>uHfy-N{7H>Yi@2E=#5cRr8V+$&Mbhwy#~9 z>_IfOoakc8S?Rs!hWD}ap*OX{mB)*4nYXCRXTYn0%e+2a1qOu%qYccf)HRmSw%f9O zIazk0KdSs=Gv|rg_E@&Rn5l5~WJ~#rePMsGJy|PX*yEZE|6NYX_j1_`h0;)Iuryc_ zOjeXvFR4rh+pEiGbS5i8$&PTay{faStTGr3c7-atm=AY$I=A?5cjA7p=S1eafkVI# zF(>68uTRIEt^QiaQ;-_Hm$R|Gjo%A0E2fOmPJh93s>cZx26S8xEGX<()<)dn{5-lO zQGy_nsNiQpHI|@~I*4}aaxUmj$%M!bge6|ZSQYnTC7td*i)k79;F+9n zuYaw5S+n;#=OlM0cTb)5+_?1SBHEo?`r$J{x) zt|CCSiFY|~I^pA8$~)xVv#S#0TG0k5B>oJkkrX?Zzi5`QrQj!RRFH+J6}y3S%rizd3){%BgC|5B6P^ciBFk)m({7;dW zaT+Jc5ezVUV_VAD)#M3vitJOp;_nszxY*-jXT;8keMjs&Vq03~(IZFkqjt=izuud3M89&PSC(1FgSra2aCJJ^8(9W5t&nmZ9~=jY(@wvO(YTjJZ6ZuR}4 z-9~?fd)$90$eAAg61lVfA-5|~wXVjp{W}UmmI~DPcLZwekXHU3K2HdN-R@-IYC)kw zUPFDPKH{DZ*1D-+FmN{e^)g9+XzZp`b-A8ycW(uo(h=RFTwm!>d6fB2#esSL+xyqN zcF&i-uR?A^Sy=z8(miG8l@)>Q{#9P*4y=Au#nT_JKCaz}?kZ?n`nt|G$~Q9=$^Q>E Cj4s~* diff --git a/out.bin b/out.bin index 03c49f437569c1a35735f6718e8f4cb01833f66f..0cadddef4155f551003620160085154cd03dd31a 100644 GIT binary patch literal 69 zcmWFzadKv4U}9iqU|?VcVrB*=CMG=wMi7gEk&%HJB+0L1rcfMO~;c Hi1PseZ(ajQ literal 64 zcmW;C!3}^g5Cg%r4Sz%rG?J76{nwBZxZKApjr@LNif}?Lxa%ViYAKMoA}nO?c%SSt FSU*~40