From 3cb63739152cd26ec43993953c7b93d4ab9bcce7 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 12 Oct 2025 22:53:30 +0200 Subject: [PATCH] =?UTF-8?q?Compiler=20aufger=C3=A4umt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 8704 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 10828 bytes .../net8.0/STCompiler.Common.AssemblyInfo.cs | 2 +- ...STCompiler.Common.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 8704 bytes .../obj/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 10828 bytes .../Debug/net8.0/ref/STCompiler.Common.dll | Bin 7168 -> 7168 bytes .../Debug/net8.0/refint/STCompiler.Common.dll | Bin 7168 -> 7168 bytes STCompiler.Compiler/Ast.cs | 83 +++ STCompiler.Compiler/Lexer.cs | 161 +++++ STCompiler.Compiler/Parser.cs | 335 ++++++++++ STCompiler.Compiler/Program.cs | 586 +----------------- .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 8704 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 10828 bytes .../bin/Debug/net8.0/STCompiler.Compiler.dll | Bin 27136 -> 27136 bytes .../bin/Debug/net8.0/STCompiler.Compiler.pdb | Bin 18736 -> 18936 bytes .../STCompiler.Compiler.AssemblyInfo.cs | 4 +- ...Compiler.Compiler.AssemblyInfoInputs.cache | 2 +- ...er.Compiler.csproj.AssemblyReference.cache | Bin 458 -> 458 bytes ...er.Compiler.csproj.CoreCompileInputs.cache | 2 +- .../obj/Debug/net8.0/STCompiler.Compiler.dll | Bin 27136 -> 27136 bytes .../obj/Debug/net8.0/STCompiler.Compiler.pdb | Bin 18736 -> 18936 bytes .../Debug/net8.0/ref/STCompiler.Compiler.dll | Bin 9728 -> 9216 bytes .../net8.0/refint/STCompiler.Compiler.dll | Bin 9728 -> 9216 bytes .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 8704 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 10828 bytes .../Debug/net8.0/STCompiler.Disassembler.dll | Bin 9216 -> 9216 bytes .../Debug/net8.0/STCompiler.Disassembler.pdb | Bin 12104 -> 12104 bytes .../STCompiler.Disassembler.AssemblyInfo.cs | 2 +- ...iler.Disassembler.AssemblyInfoInputs.cache | 2 +- ...isassembler.csproj.AssemblyReference.cache | Bin 458 -> 458 bytes .../Debug/net8.0/STCompiler.Disassembler.dll | Bin 9216 -> 9216 bytes .../Debug/net8.0/STCompiler.Disassembler.pdb | Bin 12104 -> 12104 bytes .../net8.0/ref/STCompiler.Disassembler.dll | Bin 6144 -> 6144 bytes .../net8.0/refint/STCompiler.Disassembler.dll | Bin 6144 -> 6144 bytes .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 8704 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 10828 bytes .../bin/Debug/net8.0/STCompiler.Simulator.dll | Bin 13312 -> 13312 bytes .../bin/Debug/net8.0/STCompiler.Simulator.pdb | Bin 12820 -> 12820 bytes .../STCompiler.Simulator.AssemblyInfo.cs | 2 +- ...ompiler.Simulator.AssemblyInfoInputs.cache | 2 +- ...r.Simulator.csproj.AssemblyReference.cache | Bin 458 -> 458 bytes .../obj/Debug/net8.0/STCompiler.Simulator.dll | Bin 13312 -> 13312 bytes .../obj/Debug/net8.0/STCompiler.Simulator.pdb | Bin 12820 -> 12820 bytes .../Debug/net8.0/ref/STCompiler.Simulator.dll | Bin 6656 -> 6656 bytes .../net8.0/refint/STCompiler.Simulator.dll | Bin 6656 -> 6656 bytes 46 files changed, 591 insertions(+), 594 deletions(-) create mode 100644 STCompiler.Compiler/Ast.cs create mode 100644 STCompiler.Compiler/Lexer.cs create mode 100644 STCompiler.Compiler/Parser.cs diff --git a/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll index 9be2cde7993e996b17b33985c6d6c62c70f51e7f..ea9b04b3d44abbe0f37aa1f839383d744c5a62c7 100644 GIT binary patch delta 235 zcmZp0X>gg)!Q!sAYU{=x7cqertGNsZc^7!?O?wt-mojh5<_BW@Od6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTnvC1qKdCN2Io*+McvVEWqyH(eUT zU6zE^NS`YCB{O-3WU2yG@QDgk5U9Fp{l0|v3S}8nj|A~*Zgg)!J?;NeraQmi#ZYIv%{6LJKNyE~@%p}>+(#$k1 z(KyX8CE3W*)F8<`F)hWy(9FWpFxA{N&CJ5oJY}-Dq%6y(gVVYuTSx{7)HS_HyzZCb zwWU_Z!^6KXXz~onR0Wt|2~-fMnk#!n<{81ZV{x1(!ryL|l@ez4w`8zjFk>)bNMxHAIL;P diff --git a/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.pdb index ee1294bd51634b0564020f2c95e9bd556dd57374..8486650aa59c9b41c284e3e24e16c2305b1712d3 100644 GIT binary patch delta 69 zcmV-L0J{IoRLoS6d=!`MpxH!$S45;%d>hJi`Wyn1qx!LsKm#B-3I?Jp1*esfK%#b9 b#U5ut&!`_b!LrB@tjUz$y~Ccf@B>^Xa!MfN delta 69 zcmV-L0J{IoRLoS6d=!3y>|xhVXiBtw97sq{j#9G0mWr{EKm#CCJ89`Vmi{f!c6?Cxu*b8r@B>^X)3+rK diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs index 926c55a..84adce7 100644 --- a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Common")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9864c1965fa3f1dc2950b7afd816891e75f6857d")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ec4d7dc26ee2fd96db003ab3a6c1af70e02894b9")] [assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Common")] [assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Common")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache index 43de47b..e00287e 100644 --- a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache @@ -1 +1 @@ -3ee5798b43eb2bdc5cb3333bf67081acc7fb5bfbfd1c25a96138387cd1048786 +8cfdc237030ec5222d5f9b3cae794a2e89120fd57c83b878660304653c51962d diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.dll index 9be2cde7993e996b17b33985c6d6c62c70f51e7f..ea9b04b3d44abbe0f37aa1f839383d744c5a62c7 100644 GIT binary patch delta 235 zcmZp0X>gg)!Q!sAYU{=x7cqertGNsZc^7!?O?wt-mojh5<_BW@Od6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTnvC1qKdCN2Io*+McvVEWqyH(eUT zU6zE^NS`YCB{O-3WU2yG@QDgk5U9Fp{l0|v3S}8nj|A~*Zgg)!J?;NeraQmi#ZYIv%{6LJKNyE~@%p}>+(#$k1 z(KyX8CE3W*)F8<`F)hWy(9FWpFxA{N&CJ5oJY}-Dq%6y(gVVYuTSx{7)HS_HyzZCb zwWU_Z!^6KXXz~onR0Wt|2~-fMnk#!n<{81ZV{x1(!ryL|l@ez4w`8zjFk>)bNMxHAIL;P diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.pdb index ee1294bd51634b0564020f2c95e9bd556dd57374..8486650aa59c9b41c284e3e24e16c2305b1712d3 100644 GIT binary patch delta 69 zcmV-L0J{IoRLoS6d=!`MpxH!$S45;%d>hJi`Wyn1qx!LsKm#B-3I?Jp1*esfK%#b9 b#U5ut&!`_b!LrB@tjUz$y~Ccf@B>^Xa!MfN delta 69 zcmV-L0J{IoRLoS6d=!3y>|xhVXiBtw97sq{j#9G0mWr{EKm#CCJ89`Vmi{f!c6?Cxu*b8r@B>^X)3+rK diff --git a/STCompiler.Common/obj/Debug/net8.0/ref/STCompiler.Common.dll b/STCompiler.Common/obj/Debug/net8.0/ref/STCompiler.Common.dll index 0213da6b34a4c5e6b19113ca052af9fdb1b2b7e7..6187086a9da33ab0cd8ee32c5134fcab8c107c3d 100644 GIT binary patch delta 195 zcmZp$Xt0>j!Lp>{Uf0H+5@vz4-M<%?EbsSTV0!6+-$P^T&4MiN88`oDUCWIrwMXzg zqeg17Ns4(&vXNP8s!>{srCCanfq`*il5wJ0vSDJHxk0Ldk%gs6lI7;j!nLgasSL>s zCJZSI=0KdxV8md?kP3uG3~4~VC6JfGki=jBgvJbsKo*EJ1FACw(rG|F20*n2K-CsN OwI)D$%gyzYjZ6UO$vU6_ delta 195 zcmZp$Xt0>j!6L}4_-bQM3A4aQ`(C+A`8MwD`kxs${N&TxEXeYnar1xHwcMCedj!uj zYFJvBnIs!pnwh308mAeiBpX?p8YGz~rlnXInps#Hrkb0knOT^cr)=IVT+8Zj$zZ`? z#$dvb%wWi131pcvq%kBi7z0T|h7_Qv5m3~W!GIx&!5k=_1{AXZ%9sI3OCX&J6b0!3 O@lAp3l+E>$jZ6R(eKYj{ diff --git a/STCompiler.Common/obj/Debug/net8.0/refint/STCompiler.Common.dll b/STCompiler.Common/obj/Debug/net8.0/refint/STCompiler.Common.dll index 0213da6b34a4c5e6b19113ca052af9fdb1b2b7e7..6187086a9da33ab0cd8ee32c5134fcab8c107c3d 100644 GIT binary patch delta 195 zcmZp$Xt0>j!Lp>{Uf0H+5@vz4-M<%?EbsSTV0!6+-$P^T&4MiN88`oDUCWIrwMXzg zqeg17Ns4(&vXNP8s!>{srCCanfq`*il5wJ0vSDJHxk0Ldk%gs6lI7;j!nLgasSL>s zCJZSI=0KdxV8md?kP3uG3~4~VC6JfGki=jBgvJbsKo*EJ1FACw(rG|F20*n2K-CsN OwI)D$%gyzYjZ6UO$vU6_ delta 195 zcmZp$Xt0>j!6L}4_-bQM3A4aQ`(C+A`8MwD`kxs${N&TxEXeYnar1xHwcMCedj!uj zYFJvBnIs!pnwh308mAeiBpX?p8YGz~rlnXInps#Hrkb0knOT^cr)=IVT+8Zj$zZ`? z#$dvb%wWi131pcvq%kBi7z0T|h7_Qv5m3~W!GIx&!5k=_1{AXZ%9sI3OCX&J6b0!3 O@lAp3l+E>$jZ6R(eKYj{ diff --git a/STCompiler.Compiler/Ast.cs b/STCompiler.Compiler/Ast.cs new file mode 100644 index 0000000..2aa2789 --- /dev/null +++ b/STCompiler.Compiler/Ast.cs @@ -0,0 +1,83 @@ +namespace STCompiler.Compiler; + +using System.Collections.Generic; +using STCompiler.Common; + +public abstract class StNode {} +public class ProgramNode:StNode{ public List Vars=new(); public List Stmts=new(); } +public class VarDecl:StNode{ + required public string Name; + public VarType Type; + public Expr? Init; +} + +public abstract class Stmt:StNode{} +public class AssignStmt:Stmt{ + required public string Target; + required public Expr Expr; +} +public class IfStmt:Stmt{ + required public Expr Cond; + public List ThenStmts=new(); + public List ElseStmts=new(); +} +public class WhileStmt:Stmt{ + required public Expr Cond; + public List Body=new(); +} +public class ForStmt:Stmt{ + required public string Var; + required public Expr Start; + required public Expr End; + public Expr Step = new IntExpr(1); + public List Body=new(); +} + +public abstract class Expr:StNode { + public VarType Type; // Speichert den Typ des Ausdrucks +} +public class IntExpr:Expr { + public long Value; + public IntExpr(long v, VarType type = VarType.DINT) { + Value = v; + Type = type; + } +} +public class RealExpr:Expr { + public double Value; + public RealExpr(double v, VarType type = VarType.REAL) { + Value = v; + Type = type; + } +} +public class VarExpr:Expr { + public string Name; + public VarExpr(string n, VarType type) { + Name = n; + Type = type; + } +} +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; + Type = DetermineResultType(l.Type, r.Type); + } + + private static VarType DetermineResultType(VarType left, VarType right) { + // Wenn einer der Operanden LREAL ist, ist das Ergebnis LREAL + if (left == VarType.LREAL || right == VarType.LREAL) + return VarType.LREAL; + // Wenn einer der Operanden REAL ist, ist das Ergebnis REAL + if (left == VarType.REAL || right == VarType.REAL) + return VarType.REAL; + // Bei gemischten Integer-Typen nehmen wir den größeren + if ((int)left > (int)right) + return left; + return right; + } +} diff --git a/STCompiler.Compiler/Lexer.cs b/STCompiler.Compiler/Lexer.cs new file mode 100644 index 0000000..369b7b4 --- /dev/null +++ b/STCompiler.Compiler/Lexer.cs @@ -0,0 +1,161 @@ +namespace STCompiler.Compiler; + +using System; +using System.Text; +using System.Collections.Generic; +using STCompiler.Common; + +public enum TokType { + IDENT, INT, REAL, ASSIGN, SEMI, LPAREN, RPAREN, + PLUS, MINUS, MUL, DIV, + LT, GT, LE, GE, EQ, NEQ, + IF, THEN, ELSE, END_IF, + WHILE, DO, END_WHILE, + FOR, TO, BY, END_FOR, + PROGRAM, VAR, END_VAR, END_PROGRAM, + EOF +} + +public class Token{ + public TokType Type; + public string Text; + public int Line; + public Token(TokType t, string s, int line) { Type=t; Text=s; Line=line; } +} + +public class CompileError { + public int Line; + public string Message; + public CompileError(int line, string msg) { Line=line; Message=msg; } +} + +public class StLexer { + private readonly string src; + private int i; + private int currentLine = 1; + public List Errors = new(); + public StLexer(string s){src=s;} + char Peek()=> i i+1= src.Length) return '\0'; + char c = src[i++]; + if (c == '\n') currentLine++; + return c; + } + + void AddError(string msg) => Errors.Add(new CompileError(currentLine, msg)); + + public Token NextToken() { + while (char.IsWhiteSpace(Peek())) Next(); + if (Peek()=='\0') return new Token(TokType.EOF,"", currentLine); + + // Skip line comments starting with '//' + if (Peek() == '/' && Peek2() == '/') { + // consume '//' + Next(); Next(); + // skip until end of line or EOF + while (Peek() != '\0' && Peek() != '\n') Next(); + // consume newline if present + if (Peek() == '\n') Next(); + // restart tokenization after the comment + return NextToken(); + } + + if (char.IsLetter(Peek())||Peek()=='_'){ + var sb=new StringBuilder(); + int startLine = currentLine; + while (char.IsLetterOrDigit(Peek())||Peek()=='_') sb.Append(Next()); + var s=sb.ToString().ToUpperInvariant(); + return s switch { + "PROGRAM"=>new Token(TokType.PROGRAM,s,startLine), + "VAR"=>new Token(TokType.VAR,s,startLine), + "END_VAR"=>new Token(TokType.END_VAR,s,startLine), + "END_PROGRAM"=>new Token(TokType.END_PROGRAM,s,startLine), + "IF"=>new Token(TokType.IF,s,startLine), + "THEN"=>new Token(TokType.THEN,s,startLine), + "ELSE"=>new Token(TokType.ELSE,s,startLine), + "END_IF"=>new Token(TokType.END_IF,s,startLine), + "WHILE"=>new Token(TokType.WHILE,s,startLine), + "DO"=>new Token(TokType.DO,s,startLine), + "END_WHILE"=>new Token(TokType.END_WHILE,s,startLine), + "FOR"=>new Token(TokType.FOR,s,startLine), + "TO"=>new Token(TokType.TO,s,startLine), + "BY"=>new Token(TokType.BY,s,startLine), + "END_FOR"=>new Token(TokType.END_FOR,s,startLine), + _=>new Token(TokType.IDENT,s,startLine) + }; + } + + if (char.IsDigit(Peek())) { + var sb = new StringBuilder(); + int startLine = currentLine; + bool isFloat = false; + + // Ganze Zahl vor dem Dezimalpunkt + while(char.IsDigit(Peek())) + sb.Append(Next()); + + // Optional: Dezimalpunkt und Nachkommastellen + if (Peek() == '.') { + isFloat = true; + sb.Append(Next()); + while(char.IsDigit(Peek())) + sb.Append(Next()); + } + + // Optional: Exponentialdarstellung + if (Peek() == 'E' || Peek() == 'e') { + isFloat = true; + sb.Append(Next()); + if (Peek() == '+' || Peek() == '-') + sb.Append(Next()); + if (!char.IsDigit(Peek())) { + AddError("Expected digits after exponent"); + return new Token(TokType.EOF, "", startLine); + } + while(char.IsDigit(Peek())) + sb.Append(Next()); + } + + return new Token(isFloat ? TokType.REAL : TokType.INT, sb.ToString(), startLine); + } + + int tokenLine = currentLine; + if (Peek()==':'){ + Next(); + if(Peek()=='='){ + Next(); + return new Token(TokType.ASSIGN,":=",tokenLine); + } + AddError("Expected '=' after ':' for assignment"); + // Bei einem einzelnen ':' geben wir EOF zurück und stoppen das Parsen + i--; // Gehen einen Schritt zurück, damit der fehlerhafte ':' Token beim nächsten Mal neu gelesen wird + return new Token(TokType.EOF,"",tokenLine); + } + if (Peek()=='<'){ + Next(); + if (Peek()=='='){Next(); return new Token(TokType.LE,"<=",tokenLine);} + if (Peek()=='>'){Next(); return new Token(TokType.NEQ,"<>",tokenLine);} + return new Token(TokType.LT,"<",tokenLine); + } + if (Peek()=='>'){ + Next(); + if (Peek()=='='){Next(); return new Token(TokType.GE,">=",tokenLine);} + return new Token(TokType.GT,">",tokenLine); + } + if (Peek()=='='){Next();return new Token(TokType.EQ,"=",tokenLine);} + + char c=Next(); + if (c == ';') return new Token(TokType.SEMI,";",tokenLine); + if (c == '(') return new Token(TokType.LPAREN,"(",tokenLine); + if (c == ')') return new Token(TokType.RPAREN,")",tokenLine); + if (c == '+') return new Token(TokType.PLUS,"+",tokenLine); + if (c == '-') return new Token(TokType.MINUS,"-",tokenLine); + if (c == '*') return new Token(TokType.MUL,"*",tokenLine); + if (c == '/') return new Token(TokType.DIV,"/",tokenLine); + + AddError($"Unexpected character '{c}'"); + return new Token(TokType.EOF,"",tokenLine); // Skip invalid character + } +} diff --git a/STCompiler.Compiler/Parser.cs b/STCompiler.Compiler/Parser.cs new file mode 100644 index 0000000..ea715e8 --- /dev/null +++ b/STCompiler.Compiler/Parser.cs @@ -0,0 +1,335 @@ +namespace STCompiler.Compiler; + +using System; +using System.Collections.Generic; +using STCompiler.Common; + +public record Symbol { + required public string Name; + public VarType Type; + public int Index; +} + +public class StParser { + StLexer lex; + Token cur; + Dictionary syms = new(); + public List Errors => lex.Errors; + public bool HasErrors => Errors.Count > 0; + + public StParser(string s){ + lex=new StLexer(s); + cur=lex.NextToken(); + } + + void Next()=>cur=lex.NextToken(); + + void AddError(string msg) => lex.Errors.Add(new CompileError(cur.Line, msg)); + + bool Expect(TokType t){ + if(cur.Type!=t) { + AddError($"Expected {t}, got {cur.Type}"); + return false; + } + Next(); + return true; + } + + public ProgramNode? ParseProgram(){ + var p=new ProgramNode(); + if (!Expect(TokType.PROGRAM)) return null; + + if(cur.Type==TokType.IDENT) Next(); + + if(cur.Type==TokType.VAR){ + Next(); + while(cur.Type==TokType.IDENT) { + var varDecl = ParseVarDecl(); + if (varDecl == null) return null; + p.Vars.Add(varDecl); + } + if (!Expect(TokType.END_VAR)) return null; + } + + while(cur.Type!=TokType.END_PROGRAM && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + p.Stmts.Add(stmt); + } + + if (!Expect(TokType.END_PROGRAM)) return null; + return p; + } + + VarDecl? ParseVarDecl(){ + if (cur.Type != TokType.IDENT) { + AddError("Expected identifier for variable declaration"); + return null; + } + string name=cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + Next(); + + if (cur.Type != TokType.IDENT) { + AddError("Expected type name"); + return null; + } + string tname=cur.Text.ToLowerInvariant(); + Next(); + + VarType? vt = tname switch { + "bool" => VarType.BOOL, + "byte" => VarType.BYTE, + "word" => VarType.WORD, + "dword" => VarType.DWORD, + "lword" => VarType.LWORD, + "sint" => VarType.SINT, + "int" => VarType.INT, + "dint" => VarType.DINT, + "lint" => VarType.LINT, + "usint" => VarType.USINT, + "uint" => VarType.UINT, + "udint" => VarType.UDINT, + "ulint" => VarType.ULINT, + "real" => VarType.REAL, + "lreal" => VarType.LREAL, + _ => null + }; + + if (vt == null) { + AddError($"Unknown type '{tname}'"); + return null; + } + + Expr? init=null; + if(cur.Type==TokType.ASSIGN){ + Next(); // consume := + init=ParseExpr(); + if (init == null) { + AddError($"Expected expression after ':=' in variable declaration"); + return null; + } + } + + if (!Expect(TokType.SEMI)) return null; + + // Füge Variable zur Symboltabelle hinzu + syms[name] = new Symbol { Name = name, Type = vt.Value }; + + return new VarDecl{Name=name,Type=vt.Value,Init=init}; + } + + Stmt? ParseAssign() { + string target = cur.Text.ToUpperInvariant(); + Next(); // consume identifier + if (cur.Type != TokType.ASSIGN) { + AddError($"Expected ':=' after identifier '{target}'"); + return null; + } + Next(); // consume := + var e = ParseExpr(); + if (e == null) return null; + if (!Expect(TokType.SEMI)) return null; + return new AssignStmt{Target=target, Expr=e}; + } + + Stmt? ParseStmt(){ + switch(cur.Type) { + case TokType.IF: return ParseIf(); + case TokType.WHILE: return ParseWhile(); + case TokType.FOR: return ParseFor(); + case TokType.IDENT: + return ParseAssign(); + default: + AddError($"Unexpected token {cur.Type} in statement"); + return null; + } + } + + IfStmt? ParseIf(){ + Next(); // IF + var cond=ParseExpr(); + if (cond == null) return null; + if (!Expect(TokType.THEN)) return null; + + var node=new IfStmt{Cond=cond}; + while(cur.Type!=TokType.ELSE && cur.Type!=TokType.END_IF && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + node.ThenStmts.Add(stmt); + } + + if(cur.Type==TokType.ELSE){ + Next(); + while(cur.Type!=TokType.END_IF && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + node.ElseStmts.Add(stmt); + } + } + + if (!Expect(TokType.END_IF)) return null; + if (!Expect(TokType.SEMI)) return null; + return node; + } + + WhileStmt? ParseWhile(){ + Next(); // WHILE + var cond=ParseExpr(); + if (cond == null) return null; + if (!Expect(TokType.DO)) return null; + + var ws=new WhileStmt{Cond=cond}; + while(cur.Type!=TokType.END_WHILE && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + ws.Body.Add(stmt); + } + + if (!Expect(TokType.END_WHILE)) return null; + if (!Expect(TokType.SEMI)) return null; + return ws; + } + + ForStmt? ParseFor(){ + Next(); // FOR + if (cur.Type != TokType.IDENT) { + AddError("Expected identifier for FOR loop variable"); + return null; + } + string varName = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + Next(); // consume identifier + + if (cur.Type != TokType.ASSIGN) { + AddError($"Expected ':=' after identifier '{varName}'"); + return null; + } + Next(); // consume := + var start = ParseExpr(); + if (start == null) return null; + + if (!Expect(TokType.TO)) return null; + var end = ParseExpr(); + if (end == null) return null; + + Expr step = new IntExpr(1); + if(cur.Type==TokType.BY){ + Next(); + step = ParseExpr() ?? step; + } + + if (!Expect(TokType.DO)) return null; + + var fs = new ForStmt{Var=varName, Start=start, End=end, Step=step}; + while(cur.Type!=TokType.END_FOR && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + fs.Body.Add(stmt); + } + + if (!Expect(TokType.END_FOR)) return null; + if (!Expect(TokType.SEMI)) return null; + return fs; + } + + Expr? ParseExpr() => ParseCompare(); + + Expr? ParseCompare(){ + var l = ParseAddSub(); + if (l == null) return null; + + 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(); + if (r == null) return null; + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr? ParseAddSub(){ + var l=ParseMulDiv(); + if (l == null) return null; + + while(cur.Type==TokType.PLUS||cur.Type==TokType.MINUS){ + var op=cur.Type; + Next(); + var r=ParseMulDiv(); + if (r == null) return null; + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr? ParseMulDiv(){ + var l=ParsePrimary(); + if (l == null) return null; + + while(cur.Type==TokType.MUL||cur.Type==TokType.DIV){ + var op=cur.Type; + Next(); + var r=ParsePrimary(); + if (r == null) return null; + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr? ParsePrimary(){ + int startLine = cur.Line; + // Support unary + and - + if (cur.Type == TokType.PLUS || cur.Type == TokType.MINUS) { + var sign = cur.Type; + Next(); + var p = ParsePrimary(); + if (p == null) return null; + Expr zero; + if (p.Type == VarType.REAL || p.Type == VarType.LREAL) { + zero = new RealExpr(0.0, p.Type); + } else { + zero = new IntExpr(0, p.Type); + } + var op = sign == TokType.PLUS ? TokType.PLUS : TokType.MINUS; + return new BinaryExpr(zero, op, p); + } + + switch(cur.Type) { + case TokType.INT: + if (!long.TryParse(cur.Text, out var v)) { + AddError($"Invalid integer literal '{cur.Text}'"); + return null; + } + Next(); + return new IntExpr(v, VarType.DINT); + + case TokType.REAL: + if (!double.TryParse(cur.Text, out var d)) { + AddError($"Invalid floating point literal '{cur.Text}'"); + return null; + } + Next(); + return new RealExpr(d); + + case TokType.IDENT: + string n = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + Next(); + Symbol? sym; + if (!syms.TryGetValue(n, out sym)) { + AddError($"Undeclared variable '{n}'"); + return null; + } + return new VarExpr(n, sym.Type); + + case TokType.LPAREN: + Next(); + var e = ParseExpr(); + if (e == null) return null; + if (!Expect(TokType.RPAREN)) return null; + return e; + + default: + AddError($"Unexpected token {cur.Type} in expression"); + return null; + } + } +} diff --git a/STCompiler.Compiler/Program.cs b/STCompiler.Compiler/Program.cs index 40bcacd..ff79d4f 100644 --- a/STCompiler.Compiler/Program.cs +++ b/STCompiler.Compiler/Program.cs @@ -44,590 +44,8 @@ class Program { } } -// === AST === -public enum VarType { - // Boolean - BOOL=1, - // Unsigned integers - BYTE=2, WORD=3, DWORD=4, LWORD=5, - // Signed integers - SINT=6, INT=7, DINT=8, LINT=9, - // Unsigned integers (alternative names) - USINT=10, UINT=11, UDINT=12, ULINT=13, - // Floating point - REAL=14, LREAL=15 -} -public abstract class StNode{} -public class ProgramNode:StNode{ public List Vars=new(); public List Stmts=new(); } -public class VarDecl:StNode{ - required public string Name; - public VarType Type; - public Expr? Init; -} - -public abstract class Stmt:StNode{} -public class AssignStmt:Stmt{ - required public string Target; - required public Expr Expr; -} -public class IfStmt:Stmt{ - required public Expr Cond; - public List ThenStmts=new(); - public List ElseStmts=new(); -} -public class WhileStmt:Stmt{ - required public Expr Cond; - public List Body=new(); -} -public class ForStmt:Stmt{ - required public string Var; - required public Expr Start; - required public Expr End; - public Expr Step = new IntExpr(1); - public List Body=new(); -} - -public abstract class Expr:StNode { - public VarType Type; // Speichert den Typ des Ausdrucks -} -public class IntExpr:Expr { - public long Value; - public IntExpr(long v, VarType type = VarType.DINT) { - Value = v; - Type = type; - } -} -public class RealExpr:Expr { - public double Value; - public RealExpr(double v, VarType type = VarType.REAL) { - Value = v; - Type = type; - } -} -public class VarExpr:Expr { - public string Name; - public VarExpr(string n, VarType type) { - Name = n; - Type = type; - } -} -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; - Type = DetermineResultType(l.Type, r.Type); - } - - private static VarType DetermineResultType(VarType left, VarType right) { - // Wenn einer der Operanden LREAL ist, ist das Ergebnis LREAL - if (left == VarType.LREAL || right == VarType.LREAL) - return VarType.LREAL; - // Wenn einer der Operanden REAL ist, ist das Ergebnis REAL - if (left == VarType.REAL || right == VarType.REAL) - return VarType.REAL; - // Bei gemischten Integer-Typen nehmen wir den größeren - if ((int)left > (int)right) - return left; - return right; - } -} - -// === TOKENIZER === -public enum TokType { - IDENT, INT, REAL, ASSIGN, SEMI, LPAREN, RPAREN, - PLUS, MINUS, MUL, DIV, - LT, GT, LE, GE, EQ, NEQ, - IF, THEN, ELSE, END_IF, - WHILE, DO, END_WHILE, - FOR, TO, BY, END_FOR, - PROGRAM, VAR, END_VAR, END_PROGRAM, - EOF -} -public class Token{ - public TokType Type; - public string Text; - public int Line; - public Token(TokType t, string s, int line) { Type=t; Text=s; Line=line; } -} - -public class CompileError { - public int Line; - public string Message; - public CompileError(int line, string msg) { Line=line; Message=msg; } -} - -public class StLexer { - private readonly string src; - private int i; - private int currentLine = 1; - public List Errors = new(); - public StLexer(string s){src=s;} - char Peek()=> i i+1= src.Length) return '\0'; - char c = src[i++]; - if (c == '\n') currentLine++; - return c; - } - - void AddError(string msg) => Errors.Add(new CompileError(currentLine, msg)); - - public Token NextToken() { - while (char.IsWhiteSpace(Peek())) Next(); - if (Peek()=='\0') return new Token(TokType.EOF,"", currentLine); - - // Skip line comments starting with '//' - if (Peek() == '/' && Peek2() == '/') { - // consume '//' - Next(); Next(); - // skip until end of line or EOF - while (Peek() != '\0' && Peek() != '\n') Next(); - // consume newline if present - if (Peek() == '\n') Next(); - // restart tokenization after the comment - return NextToken(); - } - - if (char.IsLetter(Peek())||Peek()=='_'){ - var sb=new StringBuilder(); - int startLine = currentLine; - while (char.IsLetterOrDigit(Peek())||Peek()=='_') sb.Append(Next()); - var s=sb.ToString().ToUpperInvariant(); - return s switch { - "PROGRAM"=>new Token(TokType.PROGRAM,s,startLine), - "VAR"=>new Token(TokType.VAR,s,startLine), - "END_VAR"=>new Token(TokType.END_VAR,s,startLine), - "END_PROGRAM"=>new Token(TokType.END_PROGRAM,s,startLine), - "IF"=>new Token(TokType.IF,s,startLine), - "THEN"=>new Token(TokType.THEN,s,startLine), - "ELSE"=>new Token(TokType.ELSE,s,startLine), - "END_IF"=>new Token(TokType.END_IF,s,startLine), - "WHILE"=>new Token(TokType.WHILE,s,startLine), - "DO"=>new Token(TokType.DO,s,startLine), - "END_WHILE"=>new Token(TokType.END_WHILE,s,startLine), - "FOR"=>new Token(TokType.FOR,s,startLine), - "TO"=>new Token(TokType.TO,s,startLine), - "BY"=>new Token(TokType.BY,s,startLine), - "END_FOR"=>new Token(TokType.END_FOR,s,startLine), - _=>new Token(TokType.IDENT,s,startLine) - }; - } - - if (char.IsDigit(Peek())) { - var sb = new StringBuilder(); - int startLine = currentLine; - bool isFloat = false; - - // Ganze Zahl vor dem Dezimalpunkt - while(char.IsDigit(Peek())) - sb.Append(Next()); - - // Optional: Dezimalpunkt und Nachkommastellen - if (Peek() == '.') { - isFloat = true; - sb.Append(Next()); - while(char.IsDigit(Peek())) - sb.Append(Next()); - } - - // Optional: Exponentialdarstellung - if (Peek() == 'E' || Peek() == 'e') { - isFloat = true; - sb.Append(Next()); - if (Peek() == '+' || Peek() == '-') - sb.Append(Next()); - if (!char.IsDigit(Peek())) { - AddError("Expected digits after exponent"); - return new Token(TokType.EOF, "", startLine); - } - while(char.IsDigit(Peek())) - sb.Append(Next()); - } - - return new Token(isFloat ? TokType.REAL : TokType.INT, sb.ToString(), startLine); - } - - int tokenLine = currentLine; - if (Peek()==':'){ - Next(); - if(Peek()=='='){ - Next(); - return new Token(TokType.ASSIGN,":=",tokenLine); - } - AddError("Expected '=' after ':' for assignment"); - // Bei einem einzelnen ':' geben wir EOF zurück und stoppen das Parsen - i--; // Gehen einen Schritt zurück, damit der fehlerhafte ':' Token beim nächsten Mal neu gelesen wird - return new Token(TokType.EOF,"",tokenLine); - } - if (Peek()=='<'){ - Next(); - if (Peek()=='='){Next(); return new Token(TokType.LE,"<=",tokenLine);} - if (Peek()=='>'){Next(); return new Token(TokType.NEQ,"<>",tokenLine);} - return new Token(TokType.LT,"<",tokenLine); - } - if (Peek()=='>'){ - Next(); - if (Peek()=='='){Next(); return new Token(TokType.GE,">=",tokenLine);} - return new Token(TokType.GT,">",tokenLine); - } - if (Peek()=='='){Next();return new Token(TokType.EQ,"=",tokenLine);} - - char c=Next(); - if (c == ';') return new Token(TokType.SEMI,";",tokenLine); - if (c == '(') return new Token(TokType.LPAREN,"(",tokenLine); - if (c == ')') return new Token(TokType.RPAREN,")",tokenLine); - if (c == '+') return new Token(TokType.PLUS,"+",tokenLine); - if (c == '-') return new Token(TokType.MINUS,"-",tokenLine); - if (c == '*') return new Token(TokType.MUL,"*",tokenLine); - if (c == '/') return new Token(TokType.DIV,"/",tokenLine); - - AddError($"Unexpected character '{c}'"); - return new Token(TokType.EOF,"",tokenLine); // Skip invalid character - } -} - -// === PARSER === -public record Symbol { - required public string Name; - public VarType Type; - public int Index; -} - -public class StParser { - StLexer lex; - Token cur; - Dictionary syms = new(); - public List Errors => lex.Errors; - public bool HasErrors => Errors.Count > 0; - - public StParser(string s){ - lex=new StLexer(s); - cur=lex.NextToken(); - } - - void Next()=>cur=lex.NextToken(); - - void AddError(string msg) => lex.Errors.Add(new CompileError(cur.Line, msg)); - - bool Expect(TokType t){ - if(cur.Type!=t) { - AddError($"Expected {t}, got {cur.Type}"); - return false; - } - Next(); - return true; - } - - public ProgramNode? ParseProgram(){ - var p=new ProgramNode(); - if (!Expect(TokType.PROGRAM)) return null; - - if(cur.Type==TokType.IDENT) Next(); - - if(cur.Type==TokType.VAR){ - Next(); - while(cur.Type==TokType.IDENT) { - var varDecl = ParseVarDecl(); - if (varDecl == null) return null; - p.Vars.Add(varDecl); - } - if (!Expect(TokType.END_VAR)) return null; - } - - while(cur.Type!=TokType.END_PROGRAM && cur.Type!=TokType.EOF) { - var stmt = ParseStmt(); - if (stmt == null) return null; - p.Stmts.Add(stmt); - } - - if (!Expect(TokType.END_PROGRAM)) return null; - return p; - } - - VarDecl? ParseVarDecl(){ - if (cur.Type != TokType.IDENT) { - AddError("Expected identifier for variable declaration"); - return null; - } - string name=cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben - Next(); - - if (cur.Type != TokType.IDENT) { - AddError("Expected type name"); - return null; - } - string tname=cur.Text.ToLowerInvariant(); - Next(); - - VarType? vt = tname switch { - // Boolean - "bool" => VarType.BOOL, - // Unsigned integers - "byte" => VarType.BYTE, - "word" => VarType.WORD, - "dword" => VarType.DWORD, - "lword" => VarType.LWORD, - // Signed integers - "sint" => VarType.SINT, - "int" => VarType.INT, - "dint" => VarType.DINT, - "lint" => VarType.LINT, - // Unsigned integers (alternative names) - "usint" => VarType.USINT, - "uint" => VarType.UINT, - "udint" => VarType.UDINT, - "ulint" => VarType.ULINT, - // Floating point - "real" => VarType.REAL, - "lreal" => VarType.LREAL, - _ => null - }; - - if (vt == null) { - AddError($"Unknown type '{tname}'"); - return null; - } - - Expr? init=null; - if(cur.Type==TokType.ASSIGN){ - Next(); // consume := - init=ParseExpr(); - if (init == null) { - AddError($"Expected expression after ':=' in variable declaration"); - return null; - } - } - - if (!Expect(TokType.SEMI)) return null; - - // Füge Variable zur Symboltabelle hinzu - syms[name] = new Symbol { Name = name, Type = vt.Value }; - - return new VarDecl{Name=name,Type=vt.Value,Init=init}; - } - - Stmt? ParseAssign() { - // Der Aufrufer hat bereits geprüft, dass wir bei einem IDENT sind - string target = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben - Next(); // consume identifier - if (cur.Type != TokType.ASSIGN) { - AddError($"Expected ':=' after identifier '{target}'"); - return null; - } - Next(); // consume := - var e = ParseExpr(); - if (e == null) return null; - if (!Expect(TokType.SEMI)) return null; - return new AssignStmt{Target=target, Expr=e}; - } - - Stmt? ParseStmt(){ - switch(cur.Type) { - case TokType.IF: return ParseIf(); - case TokType.WHILE: return ParseWhile(); - case TokType.FOR: return ParseFor(); - case TokType.IDENT: - return ParseAssign(); - default: - AddError($"Unexpected token {cur.Type} in statement"); - return null; - } - } - - IfStmt? ParseIf(){ - Next(); // IF - var cond=ParseExpr(); - if (cond == null) return null; - if (!Expect(TokType.THEN)) return null; - - var node=new IfStmt{Cond=cond}; - while(cur.Type!=TokType.ELSE && cur.Type!=TokType.END_IF && cur.Type!=TokType.EOF) { - var stmt = ParseStmt(); - if (stmt == null) return null; - node.ThenStmts.Add(stmt); - } - - if(cur.Type==TokType.ELSE){ - Next(); - while(cur.Type!=TokType.END_IF && cur.Type!=TokType.EOF) { - var stmt = ParseStmt(); - if (stmt == null) return null; - node.ElseStmts.Add(stmt); - } - } - - if (!Expect(TokType.END_IF)) return null; - if (!Expect(TokType.SEMI)) return null; - return node; - } - - WhileStmt? ParseWhile(){ - Next(); // WHILE - var cond=ParseExpr(); - if (cond == null) return null; - if (!Expect(TokType.DO)) return null; - - var ws=new WhileStmt{Cond=cond}; - while(cur.Type!=TokType.END_WHILE && cur.Type!=TokType.EOF) { - var stmt = ParseStmt(); - if (stmt == null) return null; - ws.Body.Add(stmt); - } - - if (!Expect(TokType.END_WHILE)) return null; - if (!Expect(TokType.SEMI)) return null; - return ws; - } - - ForStmt? ParseFor(){ - Next(); // FOR - if (cur.Type != TokType.IDENT) { - AddError("Expected identifier for FOR loop variable"); - return null; - } - string varName = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben - Next(); // consume identifier - - if (cur.Type != TokType.ASSIGN) { - AddError($"Expected ':=' after identifier '{varName}'"); - return null; - } - Next(); // consume := - var start = ParseExpr(); - if (start == null) return null; - - if (!Expect(TokType.TO)) return null; - var end = ParseExpr(); - if (end == null) return null; - - Expr step = new IntExpr(1); - if(cur.Type==TokType.BY){ - Next(); - step = ParseExpr() ?? step; - } - - if (!Expect(TokType.DO)) return null; - - var fs = new ForStmt{Var=varName, Start=start, End=end, Step=step}; - while(cur.Type!=TokType.END_FOR && cur.Type!=TokType.EOF) { - var stmt = ParseStmt(); - if (stmt == null) return null; - fs.Body.Add(stmt); - } - - if (!Expect(TokType.END_FOR)) return null; - if (!Expect(TokType.SEMI)) return null; - return fs; - } - - Expr? ParseExpr() => ParseCompare(); - - Expr? ParseCompare(){ - var l = ParseAddSub(); - if (l == null) return null; - - 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(); - if (r == null) return null; - l=new BinaryExpr(l,op,r); - } - return l; - } - - Expr? ParseAddSub(){ - var l=ParseMulDiv(); - if (l == null) return null; - - while(cur.Type==TokType.PLUS||cur.Type==TokType.MINUS){ - var op=cur.Type; - Next(); - var r=ParseMulDiv(); - if (r == null) return null; - l=new BinaryExpr(l,op,r); - } - return l; - } - - Expr? ParseMulDiv(){ - var l=ParsePrimary(); - if (l == null) return null; - - while(cur.Type==TokType.MUL||cur.Type==TokType.DIV){ - var op=cur.Type; - Next(); - var r=ParsePrimary(); - if (r == null) return null; - l=new BinaryExpr(l,op,r); - } - return l; - } - - Expr? ParsePrimary(){ - int startLine = cur.Line; - // Support unary + and - - if (cur.Type == TokType.PLUS || cur.Type == TokType.MINUS) { - var sign = cur.Type; - Next(); - var p = ParsePrimary(); - if (p == null) return null; - Expr zero; - if (p.Type == VarType.REAL || p.Type == VarType.LREAL) { - zero = new RealExpr(0.0, p.Type); - } else { - zero = new IntExpr(0, p.Type); - } - var op = sign == TokType.PLUS ? TokType.PLUS : TokType.MINUS; - return new BinaryExpr(zero, op, p); - } - - switch(cur.Type) { - case TokType.INT: - if (!long.TryParse(cur.Text, out var v)) { - AddError($"Invalid integer literal '{cur.Text}'"); - return null; - } - Next(); - return new IntExpr(v, VarType.DINT); - - case TokType.REAL: - if (!double.TryParse(cur.Text, out var d)) { - AddError($"Invalid floating point literal '{cur.Text}'"); - return null; - } - Next(); - return new RealExpr(d); - - case TokType.IDENT: - string n = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben - Next(); - Symbol? sym; - if (!syms.TryGetValue(n, out sym)) { - AddError($"Undeclared variable '{n}'"); - return null; - } - return new VarExpr(n, sym.Type); - - case TokType.LPAREN: - Next(); - var e = ParseExpr(); - if (e == null) return null; - if (!Expect(TokType.RPAREN)) return null; - return e; - - default: - AddError($"Unexpected token {cur.Type} in expression"); - return null; - } - } - } - +// Parser, Lexer und AST wurden ausgelagert nach Parser.cs, Lexer.cs und Ast.cs +// Die Implementierungen dort werden vom Entry-Point genutzt. // === BYTECODE === public class BytecodeEmitter { diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll index 9be2cde7993e996b17b33985c6d6c62c70f51e7f..ea9b04b3d44abbe0f37aa1f839383d744c5a62c7 100644 GIT binary patch delta 235 zcmZp0X>gg)!Q!sAYU{=x7cqertGNsZc^7!?O?wt-mojh5<_BW@Od6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTnvC1qKdCN2Io*+McvVEWqyH(eUT zU6zE^NS`YCB{O-3WU2yG@QDgk5U9Fp{l0|v3S}8nj|A~*Zgg)!J?;NeraQmi#ZYIv%{6LJKNyE~@%p}>+(#$k1 z(KyX8CE3W*)F8<`F)hWy(9FWpFxA{N&CJ5oJY}-Dq%6y(gVVYuTSx{7)HS_HyzZCb zwWU_Z!^6KXXz~onR0Wt|2~-fMnk#!n<{81ZV{x1(!ryL|l@ez4w`8zjFk>)bNMxHAIL;P diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.pdb index ee1294bd51634b0564020f2c95e9bd556dd57374..8486650aa59c9b41c284e3e24e16c2305b1712d3 100644 GIT binary patch delta 69 zcmV-L0J{IoRLoS6d=!`MpxH!$S45;%d>hJi`Wyn1qx!LsKm#B-3I?Jp1*esfK%#b9 b#U5ut&!`_b!LrB@tjUz$y~Ccf@B>^Xa!MfN delta 69 zcmV-L0J{IoRLoS6d=!3y>|xhVXiBtw97sq{j#9G0mWr{EKm#CCJ89`Vmi{f!c6?Cxu*b8r@B>^X)3+rK diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.dll b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.dll index ba3ad304eabd743e15cd05b1e0fc160fa28bf462..9c7f68a36d3bcc17d1322bce9346ad00a9f851ef 100644 GIT binary patch literal 27136 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 literal 27136 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 diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.pdb b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.pdb index 57441bd7024dfbb8d6f13e4f58bc3034c969542f..49e9360444391319083b667361895f8c11509f1c 100644 GIT binary patch delta 3479 zcmZ9O3viUx701uLyZQE&-E7|E1)B#+HiRXQ%`SPr<&g-X0l|jwEM%y8APFH%M|anT zGIi)c_|#5$SOkjURnYAWFcb?#Yjwa;Mq4R1#)4DJ*lI!Bj#BOaY`!pG`F75^=XcJz zkGVNr-M@}qjKD@Slpuuxt*{f5YKIbJ;mQFipv7iq$O<poyEo@Y3{43N=L`A`t%71ZjcXfqbXJNE;v}l}74?3v)Q66BEj^hzG>zJq8s^es^?E#Ly&v<>DV88DmDg!%oTnmn&sQ(*~Q^#CC zR>xW3I34p#iq~-=IAM}``S4;%ghOioI0c-f<6-jz^PF5q?5JUaP2lIS$me6CT<}jU zNFsipS(vj)#&V}@9mjxkH0J)P7&2X#5C_iHaW*(l$AjQ}9VcS|%r*>Y31S6WJQ{pF zQkTe$xE;(-A_iRmjwKQ4pLWAJ1CDqtVL!M~$8%ASIT7(@#JB_IB=GC7u^aKP6}-xc z4qnqZMa$>72k}%b{wC6xr%^yqBfyP>S#Y?t1m3qrI^L>rCgMr3d5ISzo~`9?(KtsJ zFF`z4i*tSEJYBpL><(xN`>{#cQ2;JQ@-7Io2Yea!A2CQTj+0U?AB!czKJXsIzYF2G zA6$mqqZ-c!kAbIweTbK9^?6PB!2!Kv_5%s!Ixa#Z%oS*W*GB_{xf1*Y>^6=0r298) z&Z$7WTI+BO?|hQc6n!wk0eT1t^Wo^yD$D`D1lxryt}qw;8F;e6dEipShPC|p;6da@S_?#z_mKg1=s2LVf+K;<;dsn zk_F8$cY=96a5Ky+VC)3G31MCd<~8*kq>UY`;P?WtPD@w~K90&c8m|H00XxC<$X^TQ z$BJ#zq+>gL;dFD6Q16*?)K<$kf#G}!pMg%~8|bXtKqv7%iSp;+be%5qaKvpeHX@oW ze;Cn+BKmSfHwyM&6bgmhH(_VWpj4=);3D+&nd3%-(^zh1AiU#H|0TSXXOFt70_nt zswA^Q=c|UyCc0gI7W!`aGW>H>WjM=rLj;ui{sGV0e)B96iajZ_%=O8_;x!BY@O)XL zHFL0U<<-O03wyi$?KzqLsK2g`Z`VNy*zPEDJ z$DXJi-+1b?%P&7;{rZ-*ZBt*@rqw;@>VCDiT-!2DJ7%}O?yReS^_cI=OUsrIc5jUT zwlL-W?HxmvwO?*gOYDAUjMh!a7&3<(p+t4Fz3o9~w|dRqT>3!f71wz~+RJZuwk7rb z?Wx?sTOVIeq&=R4<2nEA*nj2dIm?+IA=PHb7U2(Ha5NjH93C2bnz!ou^IsntcyVXT zfwF7k3qC5X45!99v!ZdaBbO=5hD$($dfVH-C_#*-iBX>ztrMfIVsyC}?TKw)+}PK% zaYHxe2S!g{uM$bx!F73H7|iEjZ;ShxClS*j>fZNAiWe-wXE z7YMS*N)tun#zaDH3IpW zu!TgvQ&58J$6dpKW(tfHCzocBL#jpo31B~9PaeLC&iD|(u%ggnB4ie z+<8duDwDhR%3UAIk?C^eF*$Ndj(j0^`^kcu{N**pa2wWGw}t-#&+#61IOC@BSo55i zxfC-`2$cwmmrJ8D82)_At(+F0634}?w5-A?j36UTP>k%vd8&R}FJgsTQ@U?m%?Xen7?#t^k}K(mmi zN2A<~lhY7uT-}GZ4HT1$8H?QKT!M1shGcF;y;`+0XZWbJB?%eAwBfcr?3Kg6mfLdW zw)d9c#wE6<2r887qUx697!fBzDRMn0m&ni~WtcY++^+trx?Hic`HXtE`V$4qO9W4; zAJzO+L60JMDg0z@v9Jbjr*`0I6v0o`b9LWWFgOwXN_E$-kC-8|`fPodf=ihQC52@} zi!cOVajG-D7o0JXm*Km=q}1ojGShjcqieFbu+~P%S~oSgGZyt5)Skv8GB^@WZ0eM$ z!LdAnjUyAGs`zGA72Jo*vIu^t?s(`88M3QO=lHWi2~+t(BSMMkf>KB(;1X5hM7AeX jn8^O*@aZ`#L?&!X_hKF7X=~P2W8@13F4rMP9*X|~*$e9r delta 3257 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 literal 27136 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 diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.pdb b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.pdb index 57441bd7024dfbb8d6f13e4f58bc3034c969542f..49e9360444391319083b667361895f8c11509f1c 100644 GIT binary patch delta 3479 zcmZ9O3viUx701uLyZQE&-E7|E1)B#+HiRXQ%`SPr<&g-X0l|jwEM%y8APFH%M|anT zGIi)c_|#5$SOkjURnYAWFcb?#Yjwa;Mq4R1#)4DJ*lI!Bj#BOaY`!pG`F75^=XcJz zkGVNr-M@}qjKD@Slpuuxt*{f5YKIbJ;mQFipv7iq$O<poyEo@Y3{43N=L`A`t%71ZjcXfqbXJNE;v}l}74?3v)Q66BEj^hzG>zJq8s^es^?E#Ly&v<>DV88DmDg!%oTnmn&sQ(*~Q^#CC zR>xW3I34p#iq~-=IAM}``S4;%ghOioI0c-f<6-jz^PF5q?5JUaP2lIS$me6CT<}jU zNFsipS(vj)#&V}@9mjxkH0J)P7&2X#5C_iHaW*(l$AjQ}9VcS|%r*>Y31S6WJQ{pF zQkTe$xE;(-A_iRmjwKQ4pLWAJ1CDqtVL!M~$8%ASIT7(@#JB_IB=GC7u^aKP6}-xc z4qnqZMa$>72k}%b{wC6xr%^yqBfyP>S#Y?t1m3qrI^L>rCgMr3d5ISzo~`9?(KtsJ zFF`z4i*tSEJYBpL><(xN`>{#cQ2;JQ@-7Io2Yea!A2CQTj+0U?AB!czKJXsIzYF2G zA6$mqqZ-c!kAbIweTbK9^?6PB!2!Kv_5%s!Ixa#Z%oS*W*GB_{xf1*Y>^6=0r298) z&Z$7WTI+BO?|hQc6n!wk0eT1t^Wo^yD$D`D1lxryt}qw;8F;e6dEipShPC|p;6da@S_?#z_mKg1=s2LVf+K;<;dsn zk_F8$cY=96a5Ky+VC)3G31MCd<~8*kq>UY`;P?WtPD@w~K90&c8m|H00XxC<$X^TQ z$BJ#zq+>gL;dFD6Q16*?)K<$kf#G}!pMg%~8|bXtKqv7%iSp;+be%5qaKvpeHX@oW ze;Cn+BKmSfHwyM&6bgmhH(_VWpj4=);3D+&nd3%-(^zh1AiU#H|0TSXXOFt70_nt zswA^Q=c|UyCc0gI7W!`aGW>H>WjM=rLj;ui{sGV0e)B96iajZ_%=O8_;x!BY@O)XL zHFL0U<<-O03wyi$?KzqLsK2g`Z`VNy*zPEDJ z$DXJi-+1b?%P&7;{rZ-*ZBt*@rqw;@>VCDiT-!2DJ7%}O?yReS^_cI=OUsrIc5jUT zwlL-W?HxmvwO?*gOYDAUjMh!a7&3<(p+t4Fz3o9~w|dRqT>3!f71wz~+RJZuwk7rb z?Wx?sTOVIeq&=R4<2nEA*nj2dIm?+IA=PHb7U2(Ha5NjH93C2bnz!ou^IsntcyVXT zfwF7k3qC5X45!99v!ZdaBbO=5hD$($dfVH-C_#*-iBX>ztrMfIVsyC}?TKw)+}PK% zaYHxe2S!g{uM$bx!F73H7|iEjZ;ShxClS*j>fZNAiWe-wXE z7YMS*N)tun#zaDH3IpW zu!TgvQ&58J$6dpKW(tfHCzocBL#jpo31B~9PaeLC&iD|(u%ggnB4ie z+<8duDwDhR%3UAIk?C^eF*$Ndj(j0^`^kcu{N**pa2wWGw}t-#&+#61IOC@BSo55i zxfC-`2$cwmmrJ8D82)_At(+F0634}?w5-A?j36UTP>k%vd8&R}FJgsTQ@U?m%?Xen7?#t^k}K(mmi zN2A<~lhY7uT-}GZ4HT1$8H?QKT!M1shGcF;y;`+0XZWbJB?%eAwBfcr?3Kg6mfLdW zw)d9c#wE6<2r887qUx697!fBzDRMn0m&ni~WtcY++^+trx?Hic`HXtE`V$4qO9W4; zAJzO+L60JMDg0z@v9Jbjr*`0I6v0o`b9LWWFgOwXN_E$-kC-8|`fPodf=ihQC52@} zi!cOVajG-D7o0JXm*Km=q}1ojGShjcqieFbu+~P%S~oSgGZyt5)Skv8GB^@WZ0eM$ z!LdAnjUyAGs`zGA72Jo*vIu^t?s(`88M3QO=lHWi2~+t(BSMMkf>KB(;1X5hM7AeX jn8^O*@aZ`#L?&!X_hKF7X=~P2W8@13F4rMP9*X|~*$e9r delta 3257 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 aBdorSwe`$LhtF59HjM2J^1sbsBskc@Imkuk|| zlQ5U@7I9`G1V}c~fSZ*q`aR!!=?|9} z+uYB2zTf9L=e+0K_dR{v-PE1j^USQNwY^6r`!gi7WP*x`l)%W#nD?~x9&A$=eWl8s z!B&xoKU2^3*Qn;ag;P*bhfj%rM14_}`tPf9HG9C-|5Cx%5B=nJ(_a=g9((!sx7VaA zt`3Ck8)}*a+cJYTq0!<<3f&(m5>Xg*k-y5VSbThfNZC%2+4&-KUBoSqe|_`TO^=y= ztHL5S+OpObNg)oJctvZX0c~g4KjMC2#x#Ue@oC4WG8-$jlkl1E54+PnjmUgN-nL9e z#FgXvjP1%=%kbCgRePdb!#u8((<#uN<;rp^AKA^?a1L2d{)4=tjNiv`o_0P){b!b8 zAxC&uow4&|o_s2m3?Ox(|S2mN{WM~*8O^e1Myvd};je$ATyY9;JA zm4fjNm9UpWY1xHbEmT}WPzq`;R1nIddJFx6;!VO9n$ou%Bd6d?Fr`PKB2X^XA*vF| zq3WlaE&-}Hsb)wnM>%YpQD)(0F{8W$6_YZVK-Eh%Tk@%XNOiX-1(XLV=SZQLReX)B zsFaD!xyZ%kOIfv(Y9)p@Q*5VNg;g2#0r%noe7#1kV=g77R9#s$3+p$PB5_HHS0R=P z^5%}?E~ymPy(QfV2{e0Yc#FH3R_76CxQwfBbv}cW z*$J~lo-4N2OZyWy!!kwg?LCt zFRe&fV^l;rV^o>S8KdT@yfLa;6^J)FOb`!PR*AOn#Z!?{r*a>4>PFOQ*=se9s8g!O zNsOrH1Ep@W3T68}9|%KD%Bs^6Rqd*1L=`)0jmqT)pH{_=AIYEQ_1IffakeJ22_<(_ zpx)W0M%7B^o1+TfNDzOd?p*zKYp0reM+M$<+Q+Ehj8iXLV{)>>Q@ck?@nAfQzfq$b zyo6GPgyFp` z^;!BNow4z&tgL6vYh!wq+eNs$bEU^tI3&$|JQd8tNoV3JFo=WD@ILAB&?G1xAlHx` zW`XVP7;sjSX!8PfI|Dik${!N|(Z^`$;f65QQPh~GC zY9DB;elVa8fcfeW7*t2V$?6zbqTT=_>I4{7r@`6kELfq=$=&i8`b{X8wESCFiZ3z$ zMq#mv`8gA-yl&YoJ9M}7$oslqa2|uEe31Si{gc>*m<-Vwq9e-m5@mW>%Jj07>18QX z8D%!gY#Fm<%$6}*Pp6(vy+q#`TQXYb-@N5D)7PZ6;1L zn`X9~+1+$@)9ItLAMs7yPrqM#X3&0i9)xvM53=Y4os)Dze7 zDatYzVOd+uPB4xlzNw?kmXURI>KL!Le9x?arQNi;tslYZv&{DPS!R3pGdqZG!}($L<# zx*Q7FD;(lptzF%4zznqZd>c;z$vb?$3zbCwIQfotE zWlCC;WD7aa6Rx%f-Yp92&%ONnw~EUO)~IkQaCq56Ug&(@V!yH^sl?w_@}Q^PfaQkr zbKIhELWN7RZA80;mK%;~H&43-C}_wglG=?pT%;S-Dle38nu1JI7|PF$S}Gh1HH2e1 zh(Zm80SEa&p&gZQlR<|Sl|m<~ba-QqXdP}!g;THsHmnH!lqpLgG#4BdURDw%+W3>{ zPewSyu`4iKpdwr0@0og}B3@gwFkKa|sqX4n&{fr$o*%D{ZCKRN)md9rQyZ_^xTw0T zrnY)fr~mM@Uxe-KKSSo*DK&9j@60JW*yb;v{?0&5FHr-9k*!v997kXc4#PAK?>M4r z>5>jv09HvS-1%^;agS|~Mew`e)gn^^#?fwsYkC-6jkt5*>|IN>j@9r#vffzEe*h*d BnjioG diff --git a/STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll b/STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll index ae5936f79e77864afe9a7080e52e2c9d458b00f1..816638c07e4e778d584d1316f40dbf21f12cc4b9 100644 GIT binary patch delta 3409 zcmaKv3v3kE6^8#ivojvsc)h!RV1tcpwg?j%v^KWM5(ta1W85xw5r_0o{>U>6FP;4BACdixV>4@6!FA z3j#j2;jRuGVI0tLOIK?X+jP)7ZQoKkpJ5q~79LA@l=DzLig<**YxaECWMuGQ7gJ{d z8;6ZkJ{z^B=27)+Um@P+d2Dx+s~R0fqpW$*}K$kfW@S69AjX=QWebk03SSxjk(d_j~>>*OI(`N$FVeNhE) zWSAkJ9wvlb$vsO|!&S`_wO3Rz@6iujssREp? zt7QwH4c&5YS@{+l)J=2e$X=41m>`aPlT`v|uEYg|Wn>Sy?fd{ekZ_;umE!o9+j@PzQB zuwOVT{E2W_*dkmle1UYkQ%6N~2zLv=AZ!;l2@eZn!dHZY!e0v0!tKIi!Xe=U!fsNp zrRHT>#i+W@Sm>femU^}I$@EHOmT1z_MYC^2#+k4zbyrM3`%jha;@hH-Q3r3L{(mL! z|IIpnI``RO{CtRKPG6$TS*k)=vs75+%u=_iyo_??^bM+DRx-dRK07EbnYZ&f&8Ty^ zo2=Nh8p9)I^Rzmr7Fey*>P5%4+f^{z??vaj)vk)NYK*sIqbkWNcMLatUz(O<>V~gZ zl}?rN>IT%@tkPHi(6q{|Oj$N}&{=9ds%BK9_0<{0egW>nQur8+QEiGNz(;NO#(TVdnoO7EN#Rv_RS=-@t-5mT{`8|+m43vL(& z{B%sbL@K;zX{VbsafkHPG_Z%2N_>T|RPK|?6sa&fJ|vY(b&ZSXXLT#|74ezR#V(&h zkmROB=5c${aV;6(cBQ#i*ebkRxLMdI+(s(wB}=$jYYvh&UMA<^2V?+e#c}^2jl+{} z;?5q#md5 zN6EB|{0jClKEd7&eu$^xJcv_xmg03hPo7~%2XEk8-0an4H3sPr0@UZdiSOU<~{Oo%fnHIq^^ z>52uVCjq4=p_D$osr2bhr6+ER6BZ{dPFS2i;mg9~l07cjv*L`3Gb+x6IHnKYoj{wti^|hM%^i^V2NgNaQX8Dpnv8h)mW$G15v+|lTE`%j3XKBCM(No;-=$p7- z;t9r%D&jj=%(t>sejr7~=sz{t&tlxdKL6|4e8KfAKKt__-)dkkPhX~gJ$qjX#TKRxoLaNR4PMM!$tm-ESIXjEw7k>Ju}ebDDip}J#fI%S?cfH}4%HZTo?#bItukyU zn{P7g3QMlUt};|!aD#3NGL1jDA-Bp@p_<^TP)!b_;3~gkG4J?&RS3m2l4ceBR+TbB z+j3wSq4n`loR;IGRUv*{m&F*UTQ>i-P%QhugG$P4w9R{eQRQ=q_BK$5#A0y31*445dV4nzU aBdorSwe`$LhtF59HjM2J^1sbsBskc@Imkuk|| zlQ5U@7I9`G1V}c~fSZ*q`aR!!=?|9} z+uYB2zTf9L=e+0K_dR{v-PE1j^USQNwY^6r`!gi7WP*x`l)%W#nD?~x9&A$=eWl8s z!B&xoKU2^3*Qn;ag;P*bhfj%rM14_}`tPf9HG9C-|5Cx%5B=nJ(_a=g9((!sx7VaA zt`3Ck8)}*a+cJYTq0!<<3f&(m5>Xg*k-y5VSbThfNZC%2+4&-KUBoSqe|_`TO^=y= ztHL5S+OpObNg)oJctvZX0c~g4KjMC2#x#Ue@oC4WG8-$jlkl1E54+PnjmUgN-nL9e z#FgXvjP1%=%kbCgRePdb!#u8((<#uN<;rp^AKA^?a1L2d{)4=tjNiv`o_0P){b!b8 zAxC&uow4&|o_s2m3?Ox(|S2mN{WM~*8O^e1Myvd};je$ATyY9;JA zm4fjNm9UpWY1xHbEmT}WPzq`;R1nIddJFx6;!VO9n$ou%Bd6d?Fr`PKB2X^XA*vF| zq3WlaE&-}Hsb)wnM>%YpQD)(0F{8W$6_YZVK-Eh%Tk@%XNOiX-1(XLV=SZQLReX)B zsFaD!xyZ%kOIfv(Y9)p@Q*5VNg;g2#0r%noe7#1kV=g77R9#s$3+p$PB5_HHS0R=P z^5%}?E~ymPy(QfV2{e0Yc#FH3R_76CxQwfBbv}cW z*$J~lo-4N2OZyWy!!kwg?LCt zFRe&fV^l;rV^o>S8KdT@yfLa;6^J)FOb`!PR*AOn#Z!?{r*a>4>PFOQ*=se9s8g!O zNsOrH1Ep@W3T68}9|%KD%Bs^6Rqd*1L=`)0jmqT)pH{_=AIYEQ_1IffakeJ22_<(_ zpx)W0M%7B^o1+TfNDzOd?p*zKYp0reM+M$<+Q+Ehj8iXLV{)>>Q@ck?@nAfQzfq$b zyo6GPgyFp` z^;!BNow4z&tgL6vYh!wq+eNs$bEU^tI3&$|JQd8tNoV3JFo=WD@ILAB&?G1xAlHx` zW`XVP7;sjSX!8PfI|Dik${!N|(Z^`$;f65QQPh~GC zY9DB;elVa8fcfeW7*t2V$?6zbqTT=_>I4{7r@`6kELfq=$=&i8`b{X8wESCFiZ3z$ zMq#mv`8gA-yl&YoJ9M}7$oslqa2|uEe31Si{gc>*m<-Vwq9e-m5@mW>%Jj07>18QX z8D%!gY#Fm<%$6}*Pp6(vy+q#`TQXYb-@N5D)7PZ6;1L zn`X9~+1+$@)9ItLAMs7yPrqM#X3&0i9)xvM53=Y4os)Dze7 zDatYzVOd+uPB4xlzNw?kmXURI>KL!Le9x?arQNi;tslYZv&{DPS!R3pGdqZG!}($L<# zx*Q7FD;(lptzF%4zznqZd>c;z$vb?$3zbCwIQfotE zWlCC;WD7aa6Rx%f-Yp92&%ONnw~EUO)~IkQaCq56Ug&(@V!yH^sl?w_@}Q^PfaQkr zbKIhELWN7RZA80;mK%;~H&43-C}_wglG=?pT%;S-Dle38nu1JI7|PF$S}Gh1HH2e1 zh(Zm80SEa&p&gZQlR<|Sl|m<~ba-QqXdP}!g;THsHmnH!lqpLgG#4BdURDw%+W3>{ zPewSyu`4iKpdwr0@0og}B3@gwFkKa|sqX4n&{fr$o*%D{ZCKRN)md9rQyZ_^xTw0T zrnY)fr~mM@Uxe-KKSSo*DK&9j@60JW*yb;v{?0&5FHr-9k*!v997kXc4#PAK?>M4r z>5>jv09HvS-1%^;agS|~Mew`e)gn^^#?fwsYkC-6jkt5*>|IN>j@9r#vffzEe*h*d BnjioG diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll index 9be2cde7993e996b17b33985c6d6c62c70f51e7f..ea9b04b3d44abbe0f37aa1f839383d744c5a62c7 100644 GIT binary patch delta 235 zcmZp0X>gg)!Q!sAYU{=x7cqertGNsZc^7!?O?wt-mojh5<_BW@Od6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTnvC1qKdCN2Io*+McvVEWqyH(eUT zU6zE^NS`YCB{O-3WU2yG@QDgk5U9Fp{l0|v3S}8nj|A~*Zgg)!J?;NeraQmi#ZYIv%{6LJKNyE~@%p}>+(#$k1 z(KyX8CE3W*)F8<`F)hWy(9FWpFxA{N&CJ5oJY}-Dq%6y(gVVYuTSx{7)HS_HyzZCb zwWU_Z!^6KXXz~onR0Wt|2~-fMnk#!n<{81ZV{x1(!ryL|l@ez4w`8zjFk>)bNMxHAIL;P diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.pdb index ee1294bd51634b0564020f2c95e9bd556dd57374..8486650aa59c9b41c284e3e24e16c2305b1712d3 100644 GIT binary patch delta 69 zcmV-L0J{IoRLoS6d=!`MpxH!$S45;%d>hJi`Wyn1qx!LsKm#B-3I?Jp1*esfK%#b9 b#U5ut&!`_b!LrB@tjUz$y~Ccf@B>^Xa!MfN delta 69 zcmV-L0J{IoRLoS6d=!3y>|xhVXiBtw97sq{j#9G0mWr{EKm#CCJ89`Vmi{f!c6?Cxu*b8r@B>^X)3+rK diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.dll b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.dll index b7f03528568204e2895d4e5d3314470febef1f12..d09d15da888acaa80fa7e01dd08daf8be97cb42c 100644 GIT binary patch delta 235 zcmZqhXz-ZO!D4oK>ims8TSNq=8~E7Gxw_G1=ej1Y#XQd2HV24aX4FVcHc2s0Nj5S| zO*KkOu{29bGB7YsOfpV1OEyeQGdD;zFtV^TNwS>mEiTJa_Mdz1km988s{|%uJFEEzL~R z5{=UgQ<9A=O%0OF6Vp;G49zSo4O7ic)66VP%~K|Oi_5Z1ZNJ(yIY&G|V1w=CUB86% zytz&@j?Zt;4g2eAW${a;%i&fb3zaE)lXYbg9$@2 zgCT<@kY&n{#*oNh3?vO1Qh=gHKv7c$1BN69bD(${P|N}-V+JHGfpjWR6r=;hHwCg& KHh-4oWdi{J)=HoN diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.pdb b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.pdb index cf6edee42a9a6476be7ce532648253b5807d8941..be2064742fca321215e2f88748b54affdc05b4f1 100644 GIT binary patch delta 99 zcmV-p0G$8GUdUdMd=#WDNj_LS4@ITP{~3Hq;i7i`3!Sl$*#sal-y?KPu(qMot=od| zoD3@SFP`zrYVr#ZKx!yZnv|Ebi3Pg@7^HaKiU6Ph0A{=UqjaZ_OQ1E<;7;K)JF{E~ F>?KTlFN6R9 delta 99 zcmV-p0G$8GUdUdMd=#)fle+p6E=r4}>Sn_!Ma-3l)q=5**#sb#X^j5srsd-eHwes0P#PK9@1|-M~5%-0kHWFDzjV( F>?NdzE;;}J diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs index 8d75344..7dcf789 100644 --- a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Disassembler")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9864c1965fa3f1dc2950b7afd816891e75f6857d")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ec4d7dc26ee2fd96db003ab3a6c1af70e02894b9")] [assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Disassembler")] [assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Disassembler")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache index 24a53ad..2774274 100644 --- a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache @@ -1 +1 @@ -1d7c20312d485399a6349304512afd19a40ff18597fb7dff3871190dd81cd69c +124c0ad3412d8c18080f8da6f8923566217268c81c32c97108af077bc918b46f diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.AssemblyReference.cache b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.AssemblyReference.cache index ab8cdd2281ca848e3ae64eb451b19cbc55441711..308cebe535193434766818b3a245e6a3101cf215 100644 GIT binary patch delta 16 XcmX@be2RHO8mqThZTN+a+3}13H2?+| delta 16 YcmX@be2RHO8mq?7Z9h(J%#LRS06-K6s{jB1 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.dll b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.dll index b7f03528568204e2895d4e5d3314470febef1f12..d09d15da888acaa80fa7e01dd08daf8be97cb42c 100644 GIT binary patch delta 235 zcmZqhXz-ZO!D4oK>ims8TSNq=8~E7Gxw_G1=ej1Y#XQd2HV24aX4FVcHc2s0Nj5S| zO*KkOu{29bGB7YsOfpV1OEyeQGdD;zFtV^TNwS>mEiTJa_Mdz1km988s{|%uJFEEzL~R z5{=UgQ<9A=O%0OF6Vp;G49zSo4O7ic)66VP%~K|Oi_5Z1ZNJ(yIY&G|V1w=CUB86% zytz&@j?Zt;4g2eAW${a;%i&fb3zaE)lXYbg9$@2 zgCT<@kY&n{#*oNh3?vO1Qh=gHKv7c$1BN69bD(${P|N}-V+JHGfpjWR6r=;hHwCg& KHh-4oWdi{J)=HoN diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.pdb b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.pdb index cf6edee42a9a6476be7ce532648253b5807d8941..be2064742fca321215e2f88748b54affdc05b4f1 100644 GIT binary patch delta 99 zcmV-p0G$8GUdUdMd=#WDNj_LS4@ITP{~3Hq;i7i`3!Sl$*#sal-y?KPu(qMot=od| zoD3@SFP`zrYVr#ZKx!yZnv|Ebi3Pg@7^HaKiU6Ph0A{=UqjaZ_OQ1E<;7;K)JF{E~ F>?KTlFN6R9 delta 99 zcmV-p0G$8GUdUdMd=#)fle+p6E=r4}>Sn_!Ma-3l)q=5**#sb#X^j5srsd-eHwes0P#PK9@1|-M~5%-0kHWFDzjV( F>?NdzE;;}J diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/ref/STCompiler.Disassembler.dll b/STCompiler.Disassembler/obj/Debug/net8.0/ref/STCompiler.Disassembler.dll index a610cb6749bacd0a54861c3205c01383001abb84..e7a465bb55b6928b08a0c7b88a9f3ad1ebaadcb5 100644 GIT binary patch delta 194 zcmZoLXfT-2!6Kj8`*~we3A4cEx+9*hvpU=x#XtV7Q<=oES&-#DWSnT0Y?zp4ZjfqVWMOHNWVv}C_cK=iREA^* z6NVH9b0AJ;Fk&!cNCiS8hBP4G639zoNMbMmLSu$RAPYpA0o54-=`^4o1E5+1plS=C OS`(nW<>t?Vylen4l{iQM delta 194 zcmZoLXfT-2!BV_ZXX3`55@vz?=5se~zn*q)nfG~CQ|gB4n*~|kGj9IRx{(D#YVrZD zYZ{goW+usomS(1DiN)bNMWSnT0Y?zp4ZjfqVWMOHNWVv}C_cK=iREA^* z6NVH9b0AJ;Fk&!cNCiS8hBP4G639zoNMbMmLSu$RAPYpA0o54-=`^4o1E5+1plS=C OS`(nW<>t?Vylen4l{iQM delta 194 zcmZoLXfT-2!BV_ZXX3`55@vz?=5se~zn*q)nfG~CQ|gB4n*~|kGj9IRx{(D#YVrZD zYZ{goW+usomS(1DiN)bNMgg)!Q!sAYU{=x7cqertGNsZc^7!?O?wt-mojh5<_BW@Od6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTnvC1qKdCN2Io*+McvVEWqyH(eUT zU6zE^NS`YCB{O-3WU2yG@QDgk5U9Fp{l0|v3S}8nj|A~*Zgg)!J?;NeraQmi#ZYIv%{6LJKNyE~@%p}>+(#$k1 z(KyX8CE3W*)F8<`F)hWy(9FWpFxA{N&CJ5oJY}-Dq%6y(gVVYuTSx{7)HS_HyzZCb zwWU_Z!^6KXXz~onR0Wt|2~-fMnk#!n<{81ZV{x1(!ryL|l@ez4w`8zjFk>)bNMxHAIL;P diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.pdb index ee1294bd51634b0564020f2c95e9bd556dd57374..8486650aa59c9b41c284e3e24e16c2305b1712d3 100644 GIT binary patch delta 69 zcmV-L0J{IoRLoS6d=!`MpxH!$S45;%d>hJi`Wyn1qx!LsKm#B-3I?Jp1*esfK%#b9 b#U5ut&!`_b!LrB@tjUz$y~Ccf@B>^Xa!MfN delta 69 zcmV-L0J{IoRLoS6d=!3y>|xhVXiBtw97sq{j#9G0mWr{EKm#CCJ89`Vmi{f!c6?Cxu*b8r@B>^X)3+rK diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.dll b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.dll index f0cc84108390bd133746ae2b1253ac272abdfb3f..66358cab197ccb96bc780d2f01664d413e6469f7 100644 GIT binary patch delta 235 zcmZq3Xvmn*!SXdf<@&~+CrSdJ`?y0Lm>#${6n;MFKXpyk<_6`DOd6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTmms_Ce&h~!Pihhpz69Otp;!Y-8nGNj4Gb938Akqw|&Jaka0reOF)fxa*TL9IX0Oc(= J-`7=S0|3GaP&fbp delta 235 zcmZq3Xvmn*!E(V-xn*O|6D0v=!%qkA8BcZC&wb7F_oj^Hn;VorGHF;^n3*ISTAG=r zB^sw0rX(9#ni?dTC#I!X7@ApF8m5|?rkPoonx{;jsix18S9W^Ze&iV!9T~Lf*{rT+KK$a@}cpo^MlzoZ&$y`>Tk(l!C=NYLff$Wsc I_jMK70AvS9g#Z8m diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.pdb b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.pdb index 6e34d52df378d562efe1faa215ba10f6812013ff..a4fe96a79d9a92f9f01daa865aaa439d776a8f19 100644 GIT binary patch delta 99 zcmV-p0G$7nWRzr(d=$f0rz<+^kWH)An$)kvNMQ(KDE_gK2nHatFxWe7F$mKAVsiLw zwjcWCS&9dy_D7R~95_v?x}Kl2xCXle7^HaKiU6Ph0A{=UqjaZ_OQ1E<;7;K)JF|-l Fi6>|rFTDT& delta 99 zcmV-p0G$7nWRzr(d=#Sg#us<7u1trlTHpf(S`2P>%a*Z_2nHZy_oE|B*#y~CJOtbX z0lQ7GYXM?BV8hT5!nhda!B)<*xCXle7!d;@>Hwes0P#PK9@1|-M~5%-0kHWFDzl3U Fi6@2zDi;6% diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs index fb54c76..d430c99 100644 --- a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs +++ b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Simulator")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9864c1965fa3f1dc2950b7afd816891e75f6857d")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ec4d7dc26ee2fd96db003ab3a6c1af70e02894b9")] [assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Simulator")] [assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Simulator")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache index d498f78..1f809e4 100644 --- a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache +++ b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache @@ -1 +1 @@ -7a1166fec5b2204048691a4c5ed6c88cb952b3b293ec9ef79ad85cd86bbe7e09 +9731a6e2cf5ff58c4c9e71ca1d547507058070586723183af16235f22b593078 diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.AssemblyReference.cache b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.AssemblyReference.cache index ab8cdd2281ca848e3ae64eb451b19cbc55441711..308cebe535193434766818b3a245e6a3101cf215 100644 GIT binary patch delta 16 XcmX@be2RHO8mqThZTN+a+3}13H2?+| delta 16 YcmX@be2RHO8mq?7Z9h(J%#LRS06-K6s{jB1 diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.dll b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.dll index f0cc84108390bd133746ae2b1253ac272abdfb3f..66358cab197ccb96bc780d2f01664d413e6469f7 100644 GIT binary patch delta 235 zcmZq3Xvmn*!SXdf<@&~+CrSdJ`?y0Lm>#${6n;MFKXpyk<_6`DOd6@lCMo7A$wp?W zsYYojmS!nQ1_s87Nydq0$%ct(<_4(-Mi!PPNtTmms_Ce&h~!Pihhpz69Otp;!Y-8nGNj4Gb938Akqw|&Jaka0reOF)fxa*TL9IX0Oc(= J-`7=S0|3GaP&fbp delta 235 zcmZq3Xvmn*!E(V-xn*O|6D0v=!%qkA8BcZC&wb7F_oj^Hn;VorGHF;^n3*ISTAG=r zB^sw0rX(9#ni?dTC#I!X7@ApF8m5|?rkPoonx{;jsix18S9W^Ze&iV!9T~Lf*{rT+KK$a@}cpo^MlzoZ&$y`>Tk(l!C=NYLff$Wsc I_jMK70AvS9g#Z8m diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.pdb b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.pdb index 6e34d52df378d562efe1faa215ba10f6812013ff..a4fe96a79d9a92f9f01daa865aaa439d776a8f19 100644 GIT binary patch delta 99 zcmV-p0G$7nWRzr(d=$f0rz<+^kWH)An$)kvNMQ(KDE_gK2nHatFxWe7F$mKAVsiLw zwjcWCS&9dy_D7R~95_v?x}Kl2xCXle7^HaKiU6Ph0A{=UqjaZ_OQ1E<;7;K)JF|-l Fi6>|rFTDT& delta 99 zcmV-p0G$7nWRzr(d=#Sg#us<7u1trlTHpf(S`2P>%a*Z_2nHZy_oE|B*#y~CJOtbX z0lQ7GYXM?BV8hT5!nhda!B)<*xCXle7!d;@>Hwes0P#PK9@1|-M~5%-0kHWFDzl3U Fi6@2zDi;6% diff --git a/STCompiler.Simulator/obj/Debug/net8.0/ref/STCompiler.Simulator.dll b/STCompiler.Simulator/obj/Debug/net8.0/ref/STCompiler.Simulator.dll index 458d7cf11c58a7ac5ac1a996d9acff49ca394534..088f46af2d461a6405df6f555f1a9f3d66aef1ae 100644 GIT binary patch delta 194 zcmZoLX)u}4!E*P_^eY>CN|*&KE56KJeCmP6zSTch`)2Ov-z+HhfpHVt3pPxdA3Pk4 z8mY-9Dds83MrNt0MrkRQW+_Pq2F8g=#))RhhKXtB2B`){7M3PSmYX&BGFbgn8Il=H z7*ZI_fjF7Lh{22@6$p(O(tvzRATNa>iNOE}jTsVwED&i1RA&gJ(|~#mfNBkZsx5$O OO@Q*2o9_!NvH<`FIXZIy delta 194 zcmZoLX)u}4!7}IZi9;KEN|*(B7p>m$e^aynycsr+9~ygBZ59;!z_^L+1skT!4;~Ii z4ND6%lVn3nGt;z0<21vRWFt#cgCz6Bv=j?NGYd<@RCCibGYeDml+7A^8La-63>FM# z3?>Z842BGrK$a;(8bcz3F_1K5NCAo(0Yyz23>cCa%z@%*KrsuTj2V!$1k$NMQIHN0 O-xSDB*?eDEkqrQ1=QkJt diff --git a/STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll b/STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll index 458d7cf11c58a7ac5ac1a996d9acff49ca394534..088f46af2d461a6405df6f555f1a9f3d66aef1ae 100644 GIT binary patch delta 194 zcmZoLX)u}4!E*P_^eY>CN|*&KE56KJeCmP6zSTch`)2Ov-z+HhfpHVt3pPxdA3Pk4 z8mY-9Dds83MrNt0MrkRQW+_Pq2F8g=#))RhhKXtB2B`){7M3PSmYX&BGFbgn8Il=H z7*ZI_fjF7Lh{22@6$p(O(tvzRATNa>iNOE}jTsVwED&i1RA&gJ(|~#mfNBkZsx5$O OO@Q*2o9_!NvH<`FIXZIy delta 194 zcmZoLX)u}4!7}IZi9;KEN|*(B7p>m$e^aynycsr+9~ygBZ59;!z_^L+1skT!4;~Ii z4ND6%lVn3nGt;z0<21vRWFt#cgCz6Bv=j?NGYd<@RCCibGYeDml+7A^8La-63>FM# z3?>Z842BGrK$a;(8bcz3F_1K5NCAo(0Yyz23>cCa%z@%*KrsuTj2V!$1k$NMQIHN0 O-xSDB*?eDEkqrQ1=QkJt