Cleanup the Axiom project

This commit is contained in:
2025-04-16 21:30:08 -04:00
parent 5d5cfc7ee1
commit 560ad32966
70 changed files with 182 additions and 342305 deletions

View File

@@ -3,12 +3,7 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Nullable>disable</Nullable>
<NoWarn>CS8604;CS0108;CS8602;CS8601;CS8620;CS8618;CS8603;CS8767;CS8625;CS8604;CS8600;CS8604</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.IO;
using System.Configuration;
using log4net;
using System.Globalization;
using Axiom.Utils;
@@ -13,7 +12,6 @@ namespace Axiom.Interpreter
{
public class Assembler
{
private static ILog logger = LogManager.GetLogger(typeof(Assembler));
private BinaryReader binaryReader;
private SymbolTable symbolTable;
private CodeStack codeStack = new CodeStack();
@@ -128,7 +126,7 @@ namespace Axiom.Interpreter
case Parser.ParserSymbols.codeend2 :
break;
default :
logger.Info(String.Format("No action for symbol {0}",Parser.SymbolToString(symbol)));
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("No action for symbol {0}",Parser.SymbolToString(symbol)));
break;
}
}
@@ -136,7 +134,7 @@ namespace Axiom.Interpreter
}
catch(Exception exception)
{
logger.ErrorFormat("Exception during Assembly:{0}",exception);
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception during Assembly:{0}",exception));
return false;
}
}
@@ -248,7 +246,7 @@ namespace Axiom.Interpreter
List<String> disassembly=Disassemble();
foreach(String line in disassembly)
{
logger.Info(line);
MDTrace.WriteLine(LogLevel.DEBUG,line);
}
}
// Fixup is used for combining multiple assembly streams. It resolves jump targets across each of these streams by offsetting the target address destinations by the relative code lengths of the streams.
@@ -759,7 +757,7 @@ namespace Axiom.Interpreter
{
isInError=true;
lastMessage=exception.ToString();
logger.ErrorFormat("Exception:{0}",exception);
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception:{0}",exception));
}
}
public void VariableAccess()

View File

@@ -4,7 +4,6 @@ using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using log4net;
using Axiom.Utils;
// FileName : CodeRunner.cs
@@ -14,7 +13,6 @@ namespace Axiom.Interpreter
{
public class CodeRunner : IDisposable
{
private static ILog logger = LogManager.GetLogger(typeof(CodeRunner));
private SymbolTable symbolTable = null;
private Dictionary<int, Stream> precompiles = new Dictionary<int, Stream>();
private bool useCache=false;
@@ -144,7 +142,7 @@ namespace Axiom.Interpreter
{
LastMessage="Failed to scan the input document, possible invalid character sequence.";
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return false;
}
binaryWriter.BaseStream.Seek(0, SeekOrigin.Begin);
@@ -158,7 +156,7 @@ namespace Axiom.Interpreter
{
LastMessage=String.Format("Failed to parse the input, {0} at {1}", parser.LastMessage, parser.LastLineNumber);
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return false;
}
parserWriter.BaseStream.Seek(0, SeekOrigin.Begin);
@@ -170,7 +168,7 @@ namespace Axiom.Interpreter
{
LastMessage=String.Format("Error: Failed to run the assembler, {0}", assembler.LastMessage);
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return false;
}
if (Trace) DumpSymbolTable();
@@ -182,7 +180,7 @@ namespace Axiom.Interpreter
{
LastMessage=String.Format("Exception:{0}",exception.ToString());
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return false;
}
finally
@@ -218,7 +216,7 @@ namespace Axiom.Interpreter
{
LastMessage="Failed to scan the input document, possible invalid character sequence.";
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return disassembly;
}
binaryWriter.BaseStream.Seek(0, SeekOrigin.Begin);
@@ -232,7 +230,7 @@ namespace Axiom.Interpreter
{
LastMessage=String.Format("Failed to parse the input, {0} at {1}", parser.LastMessage, parser.LastLineNumber);
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return disassembly;
}
parserWriter.BaseStream.Seek(0, SeekOrigin.Begin);
@@ -245,7 +243,7 @@ namespace Axiom.Interpreter
{
LastMessage=String.Format("Exception:{0}",exception.ToString());
IsInError=true;
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return disassembly;
}
finally
@@ -269,7 +267,7 @@ namespace Axiom.Interpreter
try
{
int hashcode = expression.GetHashCode();
if (Trace) logger.InfoFormat("Trace:{0}", expression);
if (Trace) MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Trace:{0}", expression));
if (precompiles.ContainsKey(hashcode))
{
precompiledStream = precompiles[hashcode]; // if the precompiled cache contains the expression then fetch it
@@ -287,7 +285,7 @@ namespace Axiom.Interpreter
if(assembler.IsInError)
{
LastMessage=String.Format("Error: Failed to run the assembler, {0}", assembler.LastMessage);
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return false;
}
assembler.Dispose();
@@ -297,7 +295,7 @@ namespace Axiom.Interpreter
catch (Exception exception)
{
LastMessage=String.Format("Exception:{0}", exception.ToString());
logger.ErrorFormat(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return false;
}
finally
@@ -343,7 +341,7 @@ namespace Axiom.Interpreter
catch (Exception exception)
{
axiomResult.LastMessage = String.Format("Exception:{0}", exception.ToString());
logger.Error(axiomResult.LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,axiomResult.LastMessage);
return axiomResult;
}
finally
@@ -370,7 +368,7 @@ namespace Axiom.Interpreter
if(!scanner.Analyze())
{
LastMessage = "Failed to scan the input document, possible invalid character sequence";
logger.Info(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return null;
}
binaryReader.Close();
@@ -384,7 +382,7 @@ namespace Axiom.Interpreter
if (parser.IsInError)
{
LastMessage = String.Format("Error:{0} at {1}", parser.LastMessage, parser.LastLineNumber);
logger.Info(LastMessage);
MDTrace.WriteLine(LogLevel.DEBUG,LastMessage);
return null;
}
parserReader.Close();
@@ -398,7 +396,7 @@ namespace Axiom.Interpreter
}
catch (Exception exception)
{
logger.ErrorFormat("Exception:{0}", exception.ToString());
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception:{0}", exception.ToString()));
return null;
}
finally
@@ -410,12 +408,12 @@ namespace Axiom.Interpreter
}
private void DumpSymbolTable()
{
logger.Info("********************************************************* O U T P U T ************************************************");
MDTrace.WriteLine(LogLevel.DEBUG,"********************************************************* O U T P U T ************************************************");
List<Symbol> list = new List<Symbol>(symbolTable.Values);
list = (from Symbol symbol in list where symbol.TypeOfSymbol.Equals(Symbol.SymbolType.UserSymbol) select symbol).ToList();
foreach (Symbol symbol in list)
{
logger.Info(String.Format("SYMBOL NAME:'{0}',VALUE:'{1}'", symbol.SymbolName, null == symbol.GenericData ? "<null>" : symbol.GenericData.ToString()));
MDTrace.WriteLine(LogLevel.DEBUG,(String.Format("SYMBOL NAME:'{0}',VALUE:'{1}'", symbol.SymbolName, null == symbol.GenericData ? "<null>" : symbol.GenericData.ToString())));
}
}
}

View File

@@ -1,7 +1,7 @@
using System;
using System.IO;
using System.Linq;
using log4net;
using Axiom.Utils;
// FileName : Emitter.cs
// Author : Sean Kessler
@@ -10,7 +10,6 @@ namespace Axiom.Interpreter
{
public class Emitter
{
private static ILog logger = LogManager.GetLogger(typeof(Emitter));
private bool emitting = true;
private int lastSymbol;
private BinaryReader inputStream;
@@ -38,28 +37,28 @@ namespace Axiom.Interpreter
{
if (!emitting) return;
outputStream.Write((int)code);
if(Debug)logger.Info(Scanner.SymbolToString(code));
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Scanner.SymbolToString(code));
}
public void Emit(Scanner.ScanSymbols code,int value)
{
if (!emitting) return;
outputStream.Write((int)code);
outputStream.Write(value);
if(Debug)logger.Info(Scanner.SymbolToString(code)+","+value.ToString());
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Scanner.SymbolToString(code)+","+value.ToString());
}
public void Emit(Scanner.ScanSymbols code,double value)
{
if (!emitting) return;
outputStream.Write((int)code);
outputStream.Write(value);
if(Debug)logger.Info(Scanner.SymbolToString(code)+","+value.ToString());
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Scanner.SymbolToString(code)+","+value.ToString());
}
public void Emit(Scanner.ScanSymbols code,String value)
{
if (!emitting) return;
outputStream.Write((int)code);
outputStream.Write(value);
if(Debug)logger.Info(Scanner.SymbolToString(code)+","+value.ToString());
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Scanner.SymbolToString(code)+","+value.ToString());
}
// **********************************************************************************************************************************************
public long CodePointer()
@@ -76,7 +75,7 @@ namespace Axiom.Interpreter
long positionBefore=outputStream.BaseStream.Position;
outputStream.Write((int)code);
long positionAfter=outputStream.BaseStream.Position;
if(Debug)logger.Info(Parser.SymbolToString(code)+"["+positionBefore+","+positionAfter+"]");
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Parser.SymbolToString(code)+"["+positionBefore+","+positionAfter+"]");
}
public void Emit(Parser.ParserSymbols code,Object value)
@@ -88,7 +87,7 @@ namespace Axiom.Interpreter
outputStream.Write(type.ToString());
outputStream.Write(value.ToString());
long positionAfter=outputStream.BaseStream.Position;
if(Debug)logger.Info(Parser.SymbolToString(code)+","+type.ToString()+","+value.ToString()+"["+positionBefore+","+positionAfter+"]");
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Parser.SymbolToString(code)+","+type.ToString()+","+value.ToString()+"["+positionBefore+","+positionAfter+"]");
}
public void Emit(Parser.ParserSymbols code,Object value,int intValue)
{
@@ -100,7 +99,7 @@ namespace Axiom.Interpreter
outputStream.Write(value.ToString());
outputStream.Write(intValue);
long positionAfter=outputStream.BaseStream.Position;
if(Debug)logger.Info(Parser.SymbolToString(code)+","+type.ToString()+","+value.ToString()+","+intValue+"["+positionBefore+","+positionAfter+"]");
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Parser.SymbolToString(code)+","+type.ToString()+","+value.ToString()+","+intValue+"["+positionBefore+","+positionAfter+"]");
}
public void Emit(Parser.ParserSymbols code,long value)
{
@@ -109,7 +108,7 @@ namespace Axiom.Interpreter
outputStream.Write((int)code);
outputStream.Write(value);
long positionAfter=outputStream.BaseStream.Position;
if(Debug)logger.Info(Parser.SymbolToString(code)+","+value.ToString()+","+value.ToString()+"["+positionBefore+","+positionAfter+"]");
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Parser.SymbolToString(code)+","+value.ToString()+","+value.ToString()+"["+positionBefore+","+positionAfter+"]");
}
public void EmitAsNull(Parser.ParserSymbols code)
{
@@ -120,7 +119,7 @@ namespace Axiom.Interpreter
outputStream.Write(type.ToString());
outputStream.Write("null".ToString());
long positionAfter=outputStream.BaseStream.Position;
if(Debug)logger.Info(Parser.SymbolToString(code)+","+type.ToString()+","+"null".ToString()+"["+positionBefore+","+positionAfter+"]");
if(Debug)MDTrace.WriteLine(LogLevel.DEBUG,Parser.SymbolToString(code)+","+type.ToString()+","+"null".ToString()+"["+positionBefore+","+positionAfter+"]");
}
// ************************************************************************
public void Emit(int code, int op)

View File

@@ -1,8 +1,5 @@
using System;
using System.Text;
using log4net;
//using MarketData.DataAccess;
//using MarketData.MarketDataModel;
using System.Diagnostics;
using Axiom.Utils;
@@ -13,7 +10,6 @@ namespace Axiom.Interpreter
{
public class GenericData
{
private static ILog logger = LogManager.GetLogger(typeof(GenericData));
private Object objData = null;
private String objDataType = "";
private bool isModified=false;

View File

@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Data;
using log4net;
using System.Reflection;
using Axiom.Utils;
@@ -13,7 +12,6 @@ namespace Axiom.Interpreter
{
public class SymbolTable : Dictionary<String, Symbol>
{
private static ILog logger = LogManager.GetLogger(typeof(SymbolTable));
private Dictionary<int, Symbol> symbolsById = new Dictionary<int, Symbol>();
public SymbolTable()
{

View File

@@ -0,0 +1,151 @@
using System.Diagnostics;
using System.Text;
using System.Reflection;
// Author:Sean Kessler
// Date:11/2005
namespace Axiom.Utils
{
public enum LogLevel : uint
{
NONE=0x0000,
INFO=0x0002,
DEBUG=0x0004,
VERBOSE=0x0008
};
/// <summary>MarketDataTrace - Utility for .</summary>
public class MDTrace
{
private static LogLevel logLevel=LogLevel.DEBUG;
/// <summary>MarketDataTrace - Private constructor prevents instantiation.</summary>
/// <returns>none</returns>
private MDTrace()
{
}
/// <summary>LogLevel - Get/Set Log level.</summary>
/// <param name="logLevel">The log level.</param>
/// <returns>LogLevel</returns>
public static LogLevel LogLevel
{
get{return logLevel;}
set{logLevel=value;}
}
/// <summary>WriteLine - Writes a line of text to trace log.</summary>
/// <param name="message">string content of message to write.</param>
/// <returns>void</returns>
public static void Write(LogLevel logLevel,string message)
{
if(MDTrace.logLevel<logLevel)return;
Trace.Write(GetThreadRep()+GetLogLevelRep()+"["+DateTime.Now.ToString()+"]"+GetMethodInfo()+message);
Flush();
}
/// <summary>WriteLine - Writes a line of text to trace log.</summary>
/// <param name="message">string content of message to write.</param>
/// <returns>void</returns>
public static void WriteLine(string message)
{
WriteLine(LogLevel.DEBUG,GetThreadRep()+GetLogLevelRep()+"["+DateTime.Now.ToString()+"]"+" "+GetMethodInfo()+message);
Console.WriteLine(message);
}
/// <summary>WriteLine - Writes a line of text to trace log.</summary>
/// <param name="message">string content of message to write.</param>
/// <returns>void</returns>
public static void WriteLine(LogLevel logLevel,Exception exception)
{
if(MDTrace.logLevel<logLevel)return;
Trace.WriteLine(GetThreadRep()+GetLogLevelRep()+"["+DateTime.Now.ToString()+"]"+" "+GetMethodInfo()+exception.ToString());
Console.WriteLine(exception);
Flush();
}
/// <summary>WriteLine - Writes a line of text to trace log.</summary>
/// <param name="message">string content of message to write.</param>
/// <returns>void</returns>
public static void WriteLine(LogLevel logLevel,string message,int skipFrames=2)
{
if(MDTrace.logLevel<logLevel)return;
Trace.WriteLine(GetThreadRep()+GetLogLevelRep()+"["+DateTime.Now.ToString()+"]"+" "+GetMethodInfo(skipFrames)+message);
Console.WriteLine(message);
Flush();
}
/// <summary>WriteLine - Writes a line of text to trace log.</summary>
/// <param name="message">string content of message to write.</param>
/// <returns>void</returns>
public static void WriteLine(LogLevel logLevel,ConsoleColor consoleColor,string message,int skipFrames=2)
{
if(MDTrace.logLevel<logLevel)return;
Trace.WriteLine(GetThreadRep()+GetLogLevelRep()+"["+DateTime.Now.ToString()+"]"+" "+GetMethodInfo(skipFrames)+message);
ConsoleColor currentColor=Console.ForegroundColor;
Console.ForegroundColor = consoleColor;
Console.WriteLine(message);
Console.ForegroundColor=currentColor;
Flush();
}
/// <summary>Indent - set trace log indentation.</summary>
/// <returns>void</returns>
public static void Indent()
{
Trace.Indent();
}
/// <summary>Unindent - set trace log indentation back.</summary>
/// <returns>void</returns>
public static void Unindent()
{
Trace.Unindent();
}
/// <summary>Flush - Flush trace log buffers to disk.</summary>
/// <returns>void</returns>
public static void Flush()
{
Trace.Flush();
}
/// <summary>GetLogLevel - Return current log level.</summary>
/// <returns>LogLevel</returns>
public static LogLevel GetLogLevel(String strLogLevel)
{
if(strLogLevel.Equals("debug"))return LogLevel.DEBUG;
else if(strLogLevel.Equals("verbose"))return LogLevel.VERBOSE;
else if(strLogLevel.Equals("info"))return LogLevel.INFO;
else return LogLevel.NONE;
}
/// <summary>GetLogLevel - Return current log level.</summary>
/// <returns>LogLevel</returns>
private static string GetLogLevelRep()
{
if (MDTrace.logLevel == LogLevel.DEBUG) return "[TRACE.DEBUG]";
else if (MDTrace.logLevel == LogLevel.VERBOSE) return "[TRACE.VERBOSE]";
else if (MDTrace.logLevel == LogLevel.INFO) return "[TRACE.INFO]";
else return "[TRACE.NONE]";
}
/// <summary>GetThreadRep - Return threading information.</summary>
/// <returns>LogLevel</returns>
private static string GetThreadRep()
{
return "[Thread="+Thread.CurrentThread.GetHashCode()+"]";
}
/// <summary>GetMethodInfo - Returns information about the calling method 2 frames up.</summary>
/// <returns>String</returns>
private static String GetMethodInfo(int skipFrames=2)
{
StringBuilder sb=new StringBuilder();
StackFrame frame=new StackFrame(skipFrames,true);
if(null==frame)return $"No Stack Frame at:{skipFrames}";
MethodBase methodBase=frame.GetMethod();
ParameterInfo[] parameters=methodBase.GetParameters();
sb.Append("[").Append(methodBase.DeclaringType.FullName).Append("::").Append(methodBase.Name).Append("(");
for(int index=0;index<parameters.Length;index++)
{
ParameterInfo parameter=(ParameterInfo)parameters[index];
sb.Append(parameter.Name);
if(!(index==parameters.Length-1))sb.Append(",");
}
sb.Append(")]");
return sb.ToString();
}
}
}

View File

@@ -4,13 +4,11 @@ using System.Linq;
using System.Text;
using System.IO;
using System.Globalization;
using log4net;
namespace Axiom.Utils
{
public class Utility
{
private static ILog logger = LogManager.GetLogger(typeof(Utility));
private Utility()
{
}
@@ -64,7 +62,6 @@ namespace Axiom.Utils
}
public static DateTime ParseDate(String strDate)
{
logger.InfoFormat("Parsing date {0}",strDate);
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
String[] formats = new[] { "yyyy/MM/dd","M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray();
strDate = strDate.Trim();