From f6aef1f0d176c5c9d337f8595797f1eb1e58a56b Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 11 Oct 2025 23:55:58 +0200 Subject: [PATCH] WHILE --- Program.cs | 229 +++++++++--------- bin/Debug/net8.0/Compiler.dll | Bin 14848 -> 15360 bytes bin/Debug/net8.0/Compiler.pdb | Bin 14872 -> 15196 bytes input.st | 12 +- obj/Debug/net8.0/Compiler.AssemblyInfo.cs | 2 +- .../net8.0/Compiler.AssemblyInfoInputs.cache | 2 +- obj/Debug/net8.0/Compiler.dll | Bin 14848 -> 15360 bytes obj/Debug/net8.0/Compiler.pdb | Bin 14872 -> 15196 bytes obj/Debug/net8.0/ref/Compiler.dll | Bin 7168 -> 7680 bytes obj/Debug/net8.0/refint/Compiler.dll | Bin 7168 -> 7680 bytes out.bin | Bin 69 -> 55 bytes 11 files changed, 124 insertions(+), 121 deletions(-) diff --git a/Program.cs b/Program.cs index 7f9e79c..9f30372 100644 --- a/Program.cs +++ b/Program.cs @@ -23,19 +23,19 @@ class Program { // === 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 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 class WhileStmt:Stmt{ public Expr Cond; public List Body=new(); } -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;} } +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 { @@ -43,10 +43,11 @@ public enum TokType { PLUS, MINUS, MUL, DIV, LT, GT, LE, GE, EQ, NEQ, IF, THEN, ELSE, END_IF, + WHILE, DO, END_WHILE, 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 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; @@ -58,39 +59,45 @@ public class StLexer { while (char.IsWhiteSpace(Peek())) Next(); if (Peek()=='\0') return new Token(TokType.EOF,""); - if (char.IsLetter(Peek())||Peek()=='_') { + if (char.IsLetter(Peek())||Peek()=='_'){ var sb=new StringBuilder(); while (char.IsLetterOrDigit(Peek())||Peek()=='_') sb.Append(Next()); - var s=sb.ToString(); - switch(s.ToUpperInvariant()) { - case "PROGRAM": return new Token(TokType.PROGRAM,s); - case "VAR": return new Token(TokType.VAR,s); - case "END_VAR": return new Token(TokType.END_VAR,s); - case "END_PROGRAM": return new Token(TokType.END_PROGRAM,s); - case "IF": return new Token(TokType.IF,s); - case "THEN": return new Token(TokType.THEN,s); - case "ELSE": return new Token(TokType.ELSE,s); - case "END_IF": return new Token(TokType.END_IF,s); - default: return new Token(TokType.IDENT,s); - } + var s=sb.ToString().ToUpperInvariant(); + return s switch { + "PROGRAM"=>new Token(TokType.PROGRAM,s), + "VAR"=>new Token(TokType.VAR,s), + "END_VAR"=>new Token(TokType.END_VAR,s), + "END_PROGRAM"=>new Token(TokType.END_PROGRAM,s), + "IF"=>new Token(TokType.IF,s), + "THEN"=>new Token(TokType.THEN,s), + "ELSE"=>new Token(TokType.ELSE,s), + "END_IF"=>new Token(TokType.END_IF,s), + "WHILE"=>new Token(TokType.WHILE,s), + "DO"=>new Token(TokType.DO,s), + "END_WHILE"=>new Token(TokType.END_WHILE,s), + _=>new Token(TokType.IDENT,s) + }; } if (char.IsDigit(Peek())) { var sb=new StringBuilder(); - while (char.IsDigit(Peek())) sb.Append(Next()); + while(char.IsDigit(Peek())) sb.Append(Next()); return new Token(TokType.INT,sb.ToString()); } - // Operators and symbols - if (Peek()==':') { Next(); if(Peek()=='='){Next(); return new Token(TokType.ASSIGN,":=");} } - if (Peek()=='<') { + if (Peek()==':'){ Next(); if(Peek()=='='){Next(); return new Token(TokType.ASSIGN,":=");} } + if (Peek()=='<'){ Next(); if (Peek()=='='){Next(); return new Token(TokType.LE,"<=");} if (Peek()=='>'){Next(); return new Token(TokType.NEQ,"<>");} 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,"="); } + 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 { @@ -101,7 +108,7 @@ public class StLexer { '-'=>new Token(TokType.MINUS,"-"), '*'=>new Token(TokType.MUL,"*"), '/'=>new Token(TokType.DIV,"/"), - _=>throw new Exception($"Unexpected char '{c}'") + _=>throw new Exception($"Unexpected '{c}'") }; } } @@ -111,100 +118,100 @@ 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(); } + void Expect(TokType t){if(cur.Type!=t)throw new Exception($"Expected {t}, got {cur.Type}");Next();} - public ProgramNode ParseProgram() { + 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, + 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.IF) return ParseIf(); - if (cur.Type==TokType.IDENT) { + Stmt ParseStmt(){ + if(cur.Type==TokType.IF) return ParseIf(); + if(cur.Type==TokType.WHILE) return ParseWhile(); + 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($"Unexpected token in statement: {cur.Type}"); + throw new Exception($"Unexpected token {cur.Type} in stmt"); } - 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) { + IfStmt ParseIf(){ + Next(); + var cond=ParseExpr(); Expect(TokType.THEN); + var node=new IfStmt{Cond=cond}; + while(cur.Type!=TokType.ELSE&&cur.Type!=TokType.END_IF) + node.ThenStmts.Add(ParseStmt()); + if(cur.Type==TokType.ELSE){ Next(); while(cur.Type!=TokType.END_IF) - ifs.ElseStmts.Add(ParseStmt()); + node.ElseStmts.Add(ParseStmt()); } - Expect(TokType.END_IF); - Expect(TokType.SEMI); - return ifs; + Expect(TokType.END_IF); Expect(TokType.SEMI); + return node; } - Expr ParseExpr() => ParseCompare(); + WhileStmt ParseWhile(){ + Next(); // WHILE + var cond=ParseExpr(); Expect(TokType.DO); + var ws=new WhileStmt{Cond=cond}; + while(cur.Type!=TokType.END_WHILE) + ws.Body.Add(ParseStmt()); + Expect(TokType.END_WHILE); Expect(TokType.SEMI); + return ws; + } - Expr ParseCompare() { + 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) { + 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() { + 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); + var op=cur.Type;Next();var r=ParseMulDiv();l=new BinaryExpr(l,op,r); } return l; } - - Expr ParseMulDiv() { + 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); + 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;} + 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}"); } } @@ -221,7 +228,7 @@ public class BytecodeEmitter { syms[v.Name]=new Symbol{Name=v.Name,Type=v.Type,Index=idx++}; foreach(var v in p.Vars) - if(v.Init!=null){ EmitExpr(v.Init); EmitByte(0x03); EmitU16((ushort)syms[v.Name].Index); } + if(v.Init!=null){EmitExpr(v.Init);EmitByte(0x03);EmitU16((ushort)syms[v.Name].Index);} foreach(var s in p.Stmts) EmitStmt(s); @@ -235,43 +242,47 @@ public class BytecodeEmitter { 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); + EmitByte(0x20); int jz=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); + if(iff.ElseStmts.Count>0){ + EmitByte(0x21); int jmp=code.Count; EmitU16(0); + PatchJump(jz,code.Count); foreach(var st in iff.ElseStmts) EmitStmt(st); - PatchJump(jmpPos, code.Count); - } else { - PatchJump(jzPos, code.Count); - } + PatchJump(jmp,code.Count); + } else PatchJump(jz,code.Count); break; - default: - throw new Exception($"Unhandled stmt {s.GetType().Name}"); + + case WhileStmt w: + int loopStart=code.Count; + EmitExpr(w.Cond); + EmitByte(0x20); int jzpos=code.Count; EmitU16(0); + foreach(var st in w.Body) EmitStmt(st); + EmitByte(0x21); EmitU16((ushort)loopStart); + PatchJump(jzpos,code.Count); + break; + + default: throw new Exception($"Unknown stmt {s.GetType().Name}"); } } - void PatchJump(int pos,int target){ code[pos]=(byte)(target&0xFF); code[pos+1]=(byte)(target>>8); } - + 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; + int ci=AddConst(ie.Value);EmitByte(0x01);EmitU16((ushort)ci);break; case VarExpr ve: - int vi=syms[ve.Name].Index; EmitByte(0x02); EmitU16((ushort)vi); break; + 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, - 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; + EmitExpr(be.L);EmitExpr(be.R); + EmitByte(be.Op switch{ + TokType.PLUS=>0x10,TokType.MINUS=>0x11,TokType.MUL=>0x12,TokType.DIV=>0x13, + TokType.LT=>0x14,TokType.GT=>0x15,TokType.LE=>0x16,TokType.GE=>0x17, + TokType.EQ=>0x18,TokType.NEQ=>0x19, + _=>throw new Exception("bad op") + }); break; default: throw new Exception("bad expr"); } } @@ -279,19 +290,15 @@ public class BytecodeEmitter { int AddConst(int v){int i=consts.IndexOf(v);if(i>=0)return i;consts.Add(v);return consts.Count-1;} void EmitByte(byte b)=>code.Add(b); void EmitU16(ushort v){code.Add((byte)(v&0xFF));code.Add((byte)(v>>8));} - public byte[] BuildBinary(){ - using var ms=new MemoryStream(); - var w=new BinaryWriter(ms); + using var ms=new MemoryStream();var w=new BinaryWriter(ms); w.Write(Encoding.ASCII.GetBytes("STBC")); w.Write((ushort)1); - w.Write((ushort)consts.Count); - foreach(var c in consts) w.Write(c); + w.Write((ushort)consts.Count);foreach(var c in consts)w.Write(c); w.Write((ushort)syms.Count); - var types=new byte[syms.Count]; - foreach(var kv in syms) types[kv.Value.Index]=(byte)kv.Value.Type; - foreach(var b in types) w.Write(b); - w.Write((ushort)code.Count); w.Write(code.ToArray()); + var types=new byte[syms.Count];foreach(var kv in syms)types[kv.Value.Index]=(byte)kv.Value.Type; + foreach(var b in types)w.Write(b); + w.Write((ushort)code.Count);w.Write(code.ToArray()); return ms.ToArray(); } } diff --git a/bin/Debug/net8.0/Compiler.dll b/bin/Debug/net8.0/Compiler.dll index 0e2dcacc553dab8a9afc4102140b3ca144914265..c06363972a1f77bae03b7f6131882b031de827aa 100644 GIT binary patch literal 15360 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 literal 14848 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 diff --git a/bin/Debug/net8.0/Compiler.pdb b/bin/Debug/net8.0/Compiler.pdb index 46d6a886edcaee59bc07190536811f48caff2237..94e808a8a0e2118deb92af776041f6dc23031e43 100644 GIT binary patch delta 4082 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 delta 3757 zcmaJ^eQaCR6+id-`Pq&gf5wiT&lksW^W`*gLfQmK(v}hW0c}+>0fn_`nr2y>IBiTf z_k;IdnpQ|4t?lbz8v7_?LX1JBiJ=WmQyHE1N7qUlNUSh4bz+*Tjr{}K*qE61JI^oF z^p8b7$LDv?x%b_BzV7XNhrd}oJ@D|8DpBiWL<=6GuMy-O#Y406Gm8-E2F4T~o7h1g zK;F&r_{7G$@VmuJbfph?{ei+BU}InEhaU_bzx(`0$&vflcGv1>kNo@0>6*qEbhm># zK`d_rHG$Hg@R?tZMp$tNs2?OjDJvp2=nzOyvRzOQ=q}J+kPi9==-Z&@Kvt)q3!qm) zzXxsY67)W3xLeSVL9cSb&6X?on%mKa7E9e^NI_P6J*lT^( zbumy~gImSPLYk`9fzEFYlkT-ym(1#uU z8^9^xsErXDYLy)5uMz$YC0RU~w( zhcO$p;)Crl;6E;-OaISI4C zJ*1aE7{tITd!URtDcdXXHViZF!vgm~#~Wsx2j+y!IJh5}6OyZ@1Ns5ygB`&9Hw6-y z#oa*zcj+{QA40hh3e#mv4}w?QGTEo&df;i?aU{)xyX?|(;XK^a>c9yF#x~=&+-1w` z1xcg-cSOHwBxnw%ioK}nEPBvhqCC#rL%cb%ohoEvT9`bvIDLqw=VpsV{1!_K(~C5_Z;|E}=__*! z+Y0zO!hCjqwn&Rb{4P9Nq{Btpf0({XvwLwDS$n+S)&9OScdq61xufodPoIuo-16%W zmuB91Avbw#;Q0rB`~Kf{&RCl7x)yx=&wqU-_{?{XSuY-oyy}ggeDafbufBO>;}f^v z=R43l@y}PZs+Y5y8`}J62P-NB;|SZp@?IfRai{wntdQ7?^14~1&D;Wsb?AhU@wvOPqaEQKI>L)6Z!Sr$UnA{A!1b6QzS z%SVHh^6o;?DA>>duRr0eKO98vjoX@TiRuV@eI@ipwo6;%`D}3W3c{)6jP-gxWu41s z{b@d=;z3e|EhAr}wa`6L3d@VzE6iEnLg6R{mCe?_^7#jI@;KU@%cmS%L@&S{T2mSo zr#_N?d1pe%Bf|KJFmuwlmN7R;6J1=Mcv~z>xtx{Dm*nyv<;iw=a;H4`19>VfPu(d` zJOKFxm*eh(lW*FcDy3oM;dfmpcQvZM(hHAtxe`?)NH+%(;|DD2r7#P(UuaQPDljdfkAnVASoV zZn-&v-6+aY_Lqyo{PbwFI{^o1*oi@e!hFDtK>Es%mwN4MO_stUD#nFzMwrVa&8HJ$ zBaQ={5R{TL_BkUo5I|1dYah*CF(kJJtWO7$dM&M2N^1y54M;!2Gb-kV@gnU*j}*o; zSOe+cp;`&Y#o3RV_`#mB37 z$#1`{kkkDlC-zI@v^4%J%{vkTGbw1ilv;=M7siE@Ks`*_%L!>*MtJ4LQ7bywHT6AV z{0jSMPl!>xJcRMHB%4k-rU%%vF@Q~Lp7IJQ{s9(*lf*vH`vke_mXn%N`*Wf*$=jVEl@hseqSsLD%a)*j;h9GoEBwdU{*u-7mcD+hzBnQ`D z!H2M<+4Y>dA*AMX3^xn@4`LhQ5I1AgNg6-w3kBQKBc}uwNTd1L3wf{*+z3BPn)8+y zO44u?r8kc1NO($pz F{SRBzrvLx| diff --git a/input.st b/input.st index d5c320a..0ff21a2 100644 --- a/input.st +++ b/input.st @@ -1,14 +1,10 @@ PROGRAM Demo VAR - a int16 := 3; - b int16 := 5; - c int16; + a int16 := 0; END_VAR -IF a < b THEN - c := b - a; -ELSE - c := a - b; -END_IF; +WHILE a < 5 DO + a := a + 1; +END_WHILE; END_PROGRAM diff --git a/obj/Debug/net8.0/Compiler.AssemblyInfo.cs b/obj/Debug/net8.0/Compiler.AssemblyInfo.cs index a354224..712a669 100644 --- a/obj/Debug/net8.0/Compiler.AssemblyInfo.cs +++ b/obj/Debug/net8.0/Compiler.AssemblyInfo.cs @@ -13,7 +13,7 @@ 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+0e549b6e0a943de51ec80a7d726000f16f5498dd")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+384f9c719795a70259bf409ac57d221baf7a89b1")] [assembly: System.Reflection.AssemblyProductAttribute("Compiler")] [assembly: System.Reflection.AssemblyTitleAttribute("Compiler")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache b/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache index b9fa331..1530cbc 100644 --- a/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache +++ b/obj/Debug/net8.0/Compiler.AssemblyInfoInputs.cache @@ -1 +1 @@ -f8051df38f7774448e56868f6a91a5557659f77e4a8558098bdfd3e3ba758ea4 +42e892e3dd3396a02f45555f279acee4d0083d66ab01ce9b1baf7c02d466a01c diff --git a/obj/Debug/net8.0/Compiler.dll b/obj/Debug/net8.0/Compiler.dll index 0e2dcacc553dab8a9afc4102140b3ca144914265..c06363972a1f77bae03b7f6131882b031de827aa 100644 GIT binary patch literal 15360 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 literal 14848 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 diff --git a/obj/Debug/net8.0/Compiler.pdb b/obj/Debug/net8.0/Compiler.pdb index 46d6a886edcaee59bc07190536811f48caff2237..94e808a8a0e2118deb92af776041f6dc23031e43 100644 GIT binary patch delta 4082 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 delta 3757 zcmaJ^eQaCR6+id-`Pq&gf5wiT&lksW^W`*gLfQmK(v}hW0c}+>0fn_`nr2y>IBiTf z_k;IdnpQ|4t?lbz8v7_?LX1JBiJ=WmQyHE1N7qUlNUSh4bz+*Tjr{}K*qE61JI^oF z^p8b7$LDv?x%b_BzV7XNhrd}oJ@D|8DpBiWL<=6GuMy-O#Y406Gm8-E2F4T~o7h1g zK;F&r_{7G$@VmuJbfph?{ei+BU}InEhaU_bzx(`0$&vflcGv1>kNo@0>6*qEbhm># zK`d_rHG$Hg@R?tZMp$tNs2?OjDJvp2=nzOyvRzOQ=q}J+kPi9==-Z&@Kvt)q3!qm) zzXxsY67)W3xLeSVL9cSb&6X?on%mKa7E9e^NI_P6J*lT^( zbumy~gImSPLYk`9fzEFYlkT-ym(1#uU z8^9^xsErXDYLy)5uMz$YC0RU~w( zhcO$p;)Crl;6E;-OaISI4C zJ*1aE7{tITd!URtDcdXXHViZF!vgm~#~Wsx2j+y!IJh5}6OyZ@1Ns5ygB`&9Hw6-y z#oa*zcj+{QA40hh3e#mv4}w?QGTEo&df;i?aU{)xyX?|(;XK^a>c9yF#x~=&+-1w` z1xcg-cSOHwBxnw%ioK}nEPBvhqCC#rL%cb%ohoEvT9`bvIDLqw=VpsV{1!_K(~C5_Z;|E}=__*! z+Y0zO!hCjqwn&Rb{4P9Nq{Btpf0({XvwLwDS$n+S)&9OScdq61xufodPoIuo-16%W zmuB91Avbw#;Q0rB`~Kf{&RCl7x)yx=&wqU-_{?{XSuY-oyy}ggeDafbufBO>;}f^v z=R43l@y}PZs+Y5y8`}J62P-NB;|SZp@?IfRai{wntdQ7?^14~1&D;Wsb?AhU@wvOPqaEQKI>L)6Z!Sr$UnA{A!1b6QzS z%SVHh^6o;?DA>>duRr0eKO98vjoX@TiRuV@eI@ipwo6;%`D}3W3c{)6jP-gxWu41s z{b@d=;z3e|EhAr}wa`6L3d@VzE6iEnLg6R{mCe?_^7#jI@;KU@%cmS%L@&S{T2mSo zr#_N?d1pe%Bf|KJFmuwlmN7R;6J1=Mcv~z>xtx{Dm*nyv<;iw=a;H4`19>VfPu(d` zJOKFxm*eh(lW*FcDy3oM;dfmpcQvZM(hHAtxe`?)NH+%(;|DD2r7#P(UuaQPDljdfkAnVASoV zZn-&v-6+aY_Lqyo{PbwFI{^o1*oi@e!hFDtK>Es%mwN4MO_stUD#nFzMwrVa&8HJ$ zBaQ={5R{TL_BkUo5I|1dYah*CF(kJJtWO7$dM&M2N^1y54M;!2Gb-kV@gnU*j}*o; zSOe+cp;`&Y#o3RV_`#mB37 z$#1`{kkkDlC-zI@v^4%J%{vkTGbw1ilv;=M7siE@Ks`*_%L!>*MtJ4LQ7bywHT6AV z{0jSMPl!>xJcRMHB%4k-rU%%vF@Q~Lp7IJQ{s9(*lf*vH`vke_mXn%N`*Wf*$=jVEl@hseqSsLD%a)*j;h9GoEBwdU{*u-7mcD+hzBnQ`D z!H2M<+4Y>dA*AMX3^xn@4`LhQ5I1AgNg6-w3kBQKBc}uwNTd1L3wf{*+z3BPn)8+y zO44u?r8kc1NO($pz F{SRBzrvLx| diff --git a/obj/Debug/net8.0/ref/Compiler.dll b/obj/Debug/net8.0/ref/Compiler.dll index a29029ab32543deff8194ee6196f5e8b2a159a28..2ce2e2a055961bdced73bd5afcaf67fb090315bd 100644 GIT binary patch delta 2319 zcma);du$X{6vn?hvz;z|v5)d7l%!=LZ9~P~KC<0VWNj<70&TH8QYC@ymcj}arA0)G zyCMoiVrZr@B-8{0MuQ|MMI>sl35`?&1VR&{Mn!}15fT)PiDJa>p02djKXfMZoAaG} z?wNb@d}dLRZK^^@&hh9(uSQ+*LNRYo>f>6G-$_aU|&jizBeNQ zWKd_YA=l0~itT3Ake0}zE6l@XA5*i`MEgrspmO^x<9Fpc`^)#QdIxVlnArI9ifLO0 zB7JVh4K)QTnLux~JPf2@X&5+}2`DBF+KpD>+!?8W?^$3k&wdB(rp`^V_O%_lSARM{ z7ktZ_FhE-m+_zv^T@BAe)Yt5HtywwQR3RRddFW~BQRefQVgF`Li}x9dHelhhT4P#h zHZ)E3kU1VNnA$&6JYlunun;zGkiAN?S@@*zmas_pf#m5oKV{5SLo-7%Ork#x3Wwx+ zIYJeuLl69tp$Dn-PRDKf=F&Fs9NR8Zg^)_6s0JiH6{e`S*w2M=Tm~KaBM0o_ok@|l zYgD;ZmZ&d8WigM=a#@rcai?@#EFHZ}q#Nf^6~oKb(kdt_8|k7Jh?>B(dZ4#tpp%g) zZ9m8)%9E;yks$=R-a3mbsa&FRlFAe3JY49PjzQic%j(5ZEKg+P7?~w>3bz>AbB46= zhIxW~-#kTrg^$TU8Drss`3ZT()Sks+e+2D0A(2Of!=7A+?%QR=kMcB}V!nhvBUI-3 zyF+;y=Xv2C;acH5VY6_xaGP+uutvB~_>yp!uvj=HP9UI(6b-CDia+?(HQ2P!i$pwEN+!lJE-C#a%|&Rr9=N;QI7=FEu(CM`Qo+Mk1E<6u%@lJS0;Yl+ zfm$wW4n-P@NDBed#m7eTeqo((iLhB15ynWxhc{qOz-|QW{pr4VD=N84>)<0dppbkV z_mG_^A)n&I=tLLuI+4J9at9WYyUJQ-&aCq6_s*^gJq0qiFS+1-hAc%8h6!ze%$pQ+hg(L0#U_l%SFR1}at z?z1rqe%hsIC+DDxtj11qA$rIr@jpTy#Ci;p9T-xkT95c3Pg>-YgUUyjruI~eT`hKm zyr2$>=b(5_i+x&b)6l(4L-+ED?Gw9N>}s*2Vn@Y(p7xOX+Ts=C%FDaX&7oi5w@l3g z#%*!n^KwW!hX$fif zW==?bpuT3+irPB+oy;nurlIdXUZ`}W2(KxlQ*^4wA_{B@=WC^c2|0etvo}yE3+JV@PzF>p7#n% zE6UnJ(O@7H43$TM{*v-gOIw*g6p5AxTT4m;Es?fhq$1Q3u-AKwY}@PhG$#K5^e`UP zcDOr#qOr2xzTge_`He2smzAAnHk6_QWoYA*5oHwzCO;T~X1gl$2xLgE5_YbU*C7+v?tZ%DU4^)Kk0pAY~5 delta 2164 zcmZXV3v3is6o&tMr%bmk-R^E{p%m<6W4eemTWGi2*v2hIgh0~@mIN`OrQ1S7L2WUq zQQ1YRR$>h87(#p`#gh04QM5dS2r3Z`5u=Inhy<&_7YU#yC<1Ey@98$}%1q{)^Ph9> zxp!vH%*3nX;cb1zKcrvXiNy9Dijkp$fSZo=QRkoa{ckRJ@2UqHjH4OYF{!^OdvY9@ zOx?%8bf-w);jB;%>3?U^72)A_-c_?yj`OW5QPYNPeO-AfE}t&kcWEH9egC4;b64KF zH0(|JRZYVg7BJgF9vYKyUj!&;8O5TNPNN;DIbj3-O+Yvm$Vs8SY-3l)hBe)0)RGK< zF8G_4p^>)7*!MIon$L4H_1DfmdsbdHRXL9-Jj`X8%e$3Fv2)Fy5qm=`+JKGYYNchP zK^tDfLMsc8S;n6)o{;L%HbVMGazGh22s?!rgayKPq|Scp3+9~ChFU6Q(w`267iGRY zp^DLA7XGOQs%Uek<9GUMXlra{>=UXgq*5uWLz15gOVmz|^B|44!DOD|f<1gPlO*;f z)pROb)NxU6)-joNlIcavCBX{H0K6<@rkE|t$Gc@zji_v7$kHyz(sEhW#71P{(`r%vpByhAp2OXjP>ET;8qgDB_#EGlXTp{8Guw82diy37eQEf*d_CApD>UFg9A@^LIC z<7gy%(M0y)e)2i2BDb-I3ooF9+<^_`%jhNtIogF?c!GQ#Pm;Uw47n%9fiCPtKlvWE zlkejtl%N%#sZ!p+-%yHdej!VdkE!(dxtC%VifGTpD)LUOC+pBdF2+;jGV!k@hp-L@ z$!;7|mNK@bj9o+?RDOD5=44zg^iYq zX&+OywwcCf9y%^s7s(Ofc72f#*?gSz68QK5)x5@3q{O8^m^QZk!_IJx37)6n8&S!= zt?U-Cg3lSryxsA*=M6WxS6j|U-bleC9i7p69UEG@9+h$b|1mlN-=K5aHzPk_+1_wk zp{0BQZ`c>G3$^lw-6@6eRXbVP2Li#iit?(}p|)U4Rr%a#TSZx0YdF|a8LgZX3I>Di zWubP)!_la7IeVrvHOJ#Sk@(k|X@4?yq`xRvpQ(42=0t|wx#?Cz5N)X7zp@Ie5uzPL w3+-~uWeb@|8QF@k_$%qFWJ89i%-+suh#VasW;8myCU2+Kf7QspzCW1yAGbq%cmMzZ diff --git a/obj/Debug/net8.0/refint/Compiler.dll b/obj/Debug/net8.0/refint/Compiler.dll index a29029ab32543deff8194ee6196f5e8b2a159a28..2ce2e2a055961bdced73bd5afcaf67fb090315bd 100644 GIT binary patch delta 2319 zcma);du$X{6vn?hvz;z|v5)d7l%!=LZ9~P~KC<0VWNj<70&TH8QYC@ymcj}arA0)G zyCMoiVrZr@B-8{0MuQ|MMI>sl35`?&1VR&{Mn!}15fT)PiDJa>p02djKXfMZoAaG} z?wNb@d}dLRZK^^@&hh9(uSQ+*LNRYo>f>6G-$_aU|&jizBeNQ zWKd_YA=l0~itT3Ake0}zE6l@XA5*i`MEgrspmO^x<9Fpc`^)#QdIxVlnArI9ifLO0 zB7JVh4K)QTnLux~JPf2@X&5+}2`DBF+KpD>+!?8W?^$3k&wdB(rp`^V_O%_lSARM{ z7ktZ_FhE-m+_zv^T@BAe)Yt5HtywwQR3RRddFW~BQRefQVgF`Li}x9dHelhhT4P#h zHZ)E3kU1VNnA$&6JYlunun;zGkiAN?S@@*zmas_pf#m5oKV{5SLo-7%Ork#x3Wwx+ zIYJeuLl69tp$Dn-PRDKf=F&Fs9NR8Zg^)_6s0JiH6{e`S*w2M=Tm~KaBM0o_ok@|l zYgD;ZmZ&d8WigM=a#@rcai?@#EFHZ}q#Nf^6~oKb(kdt_8|k7Jh?>B(dZ4#tpp%g) zZ9m8)%9E;yks$=R-a3mbsa&FRlFAe3JY49PjzQic%j(5ZEKg+P7?~w>3bz>AbB46= zhIxW~-#kTrg^$TU8Drss`3ZT()Sks+e+2D0A(2Of!=7A+?%QR=kMcB}V!nhvBUI-3 zyF+;y=Xv2C;acH5VY6_xaGP+uutvB~_>yp!uvj=HP9UI(6b-CDia+?(HQ2P!i$pwEN+!lJE-C#a%|&Rr9=N;QI7=FEu(CM`Qo+Mk1E<6u%@lJS0;Yl+ zfm$wW4n-P@NDBed#m7eTeqo((iLhB15ynWxhc{qOz-|QW{pr4VD=N84>)<0dppbkV z_mG_^A)n&I=tLLuI+4J9at9WYyUJQ-&aCq6_s*^gJq0qiFS+1-hAc%8h6!ze%$pQ+hg(L0#U_l%SFR1}at z?z1rqe%hsIC+DDxtj11qA$rIr@jpTy#Ci;p9T-xkT95c3Pg>-YgUUyjruI~eT`hKm zyr2$>=b(5_i+x&b)6l(4L-+ED?Gw9N>}s*2Vn@Y(p7xOX+Ts=C%FDaX&7oi5w@l3g z#%*!n^KwW!hX$fif zW==?bpuT3+irPB+oy;nurlIdXUZ`}W2(KxlQ*^4wA_{B@=WC^c2|0etvo}yE3+JV@PzF>p7#n% zE6UnJ(O@7H43$TM{*v-gOIw*g6p5AxTT4m;Es?fhq$1Q3u-AKwY}@PhG$#K5^e`UP zcDOr#qOr2xzTge_`He2smzAAnHk6_QWoYA*5oHwzCO;T~X1gl$2xLgE5_YbU*C7+v?tZ%DU4^)Kk0pAY~5 delta 2164 zcmZXV3v3is6o&tMr%bmk-R^E{p%m<6W4eemTWGi2*v2hIgh0~@mIN`OrQ1S7L2WUq zQQ1YRR$>h87(#p`#gh04QM5dS2r3Z`5u=Inhy<&_7YU#yC<1Ey@98$}%1q{)^Ph9> zxp!vH%*3nX;cb1zKcrvXiNy9Dijkp$fSZo=QRkoa{ckRJ@2UqHjH4OYF{!^OdvY9@ zOx?%8bf-w);jB;%>3?U^72)A_-c_?yj`OW5QPYNPeO-AfE}t&kcWEH9egC4;b64KF zH0(|JRZYVg7BJgF9vYKyUj!&;8O5TNPNN;DIbj3-O+Yvm$Vs8SY-3l)hBe)0)RGK< zF8G_4p^>)7*!MIon$L4H_1DfmdsbdHRXL9-Jj`X8%e$3Fv2)Fy5qm=`+JKGYYNchP zK^tDfLMsc8S;n6)o{;L%HbVMGazGh22s?!rgayKPq|Scp3+9~ChFU6Q(w`267iGRY zp^DLA7XGOQs%Uek<9GUMXlra{>=UXgq*5uWLz15gOVmz|^B|44!DOD|f<1gPlO*;f z)pROb)NxU6)-joNlIcavCBX{H0K6<@rkE|t$Gc@zji_v7$kHyz(sEhW#71P{(`r%vpByhAp2OXjP>ET;8qgDB_#EGlXTp{8Guw82diy37eQEf*d_CApD>UFg9A@^LIC z<7gy%(M0y)e)2i2BDb-I3ooF9+<^_`%jhNtIogF?c!GQ#Pm;Uw47n%9fiCPtKlvWE zlkejtl%N%#sZ!p+-%yHdej!VdkE!(dxtC%VifGTpD)LUOC+pBdF2+;jGV!k@hp-L@ z$!;7|mNK@bj9o+?RDOD5=44zg^iYq zX&+OywwcCf9y%^s7s(Ofc72f#*?gSz68QK5)x5@3q{O8^m^QZk!_IJx37)6n8&S!= zt?U-Cg3lSryxsA*=M6WxS6j|U-bleC9i7p69UEG@9+h$b|1mlN-=K5aHzPk_+1_wk zp{0BQZ`c>G3$^lw-6@6eRXbVP2Li#iit?(}p|)U4Rr%a#TSZx0YdF|a8LgZX3I>Di zWubP)!_la7IeVrvHOJ#Sk@(k|X@4?yq`xRvpQ(42=0t|wx#?Cz5N)X7zp@Ie5uzPL w3+-~uWeb@|8QF@k_$%qFWJ89i%-+suh#VasW;8myCU2+Kf7QspzCW1yAGbq%cmMzZ diff --git a/out.bin b/out.bin index 0cadddef4155f551003620160085154cd03dd31a..02dcef77197f16a3fba6c7d0c7c7601a45a44761 100644 GIT binary patch literal 55 tcmWFzadKv4U}gXTRv=~sV2|rVv1}G9{^2h0^k4u literal 69 zcmWFzadKv4U}9iqU|?VcVrB*=CMG=wMi7gEk&%HJB+0L1rcfMO~;c Hi1PseZ(ajQ