Daily update on 20250411-013955 by Nitload Youmu. Additional Message : none

Signed-off-by: Nitload <YoumuLiu_NSI@whv0t.onmicrosoft.com>
This commit is contained in:
Nitload
2025-04-11 01:39:55 +08:00
parent a4b2e9a805
commit 2692495dc8
11 changed files with 225 additions and 12 deletions
+1 -1
View File
@@ -100,4 +100,4 @@ INTERNAL void SSCDECL submatrix4_avx(__4_columnset *left, __4_columnset *right,
INTERNAL void SSCDECL submatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans) INTERNAL void SSCDECL submatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans)
{ {
ans->stream = _mm512_sub_ps(ALIGN512(left->stream), ALIGN512(right->stream)); ans->stream = _mm512_sub_ps(ALIGN512(left->stream), ALIGN512(right->stream));
} }
@@ -75,6 +75,11 @@ namespace StgSharp.Script.Express
return FunctionDict.TryGetValue( name, out f! ); return FunctionDict.TryGetValue( name, out f! );
} }
public override bool TryGetProcedure( string name, out ExpProcedureSource p )
{
return ProcedureDict.TryGetValue( name, out p! );
}
public override bool TryGetRule( string name, out ExpRuleSource r ) public override bool TryGetRule( string name, out ExpRuleSource r )
{ {
r = null!; r = null!;
@@ -70,7 +70,7 @@ namespace StgSharp.Script.Express
Backslash, IndexOf, RightBracket, LeftBrace, Backslash, IndexOf, RightBracket, LeftBrace,
RightBrace, Pipe, LeftParen, RightParen, LeftAsterisk, RightBrace, Pipe, LeftParen, RightParen, LeftAsterisk,
Assignment, DoublePipe, ExpSymbole, CommentSingleLine, Assignment, DoublePipe, ExpSymbole, CommentSingleLine,
CommentStart, CommentEnd, ColonEqualColon, ColonNotEqualColon CommentStart, CommentEnd, InstanceEqual, InstanceNotEqual
]; ];
public static HashSet<string> DataTypes { get; } = [ public static HashSet<string> DataTypes { get; } = [
@@ -346,8 +346,8 @@ namespace StgSharp.Script.Express
public const string CommentSingleLine = "--"; public const string CommentSingleLine = "--";
public const string CommentStart = "(*"; public const string CommentStart = "(*";
public const string CommentEnd = "*)"; public const string CommentEnd = "*)";
public const string ColonEqualColon = ":=:"; public const string InstanceEqual = ":=:";
public const string ColonNotEqualColon = ":<>:"; public const string InstanceNotEqual = ":<>:";
#endregion #endregion
} }
@@ -0,0 +1,64 @@
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
// file="ExpProcedureSource.cs"
// Project: StgSharp
// AuthorGroup: Nitload Space
// Copyright (c) Nitload Space. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the “Software”), to deal in the Software without restriction,
// including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software,
// and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and
// this permission notice shall be included in all copies
// or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED “AS IS”,
// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH
// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StgSharp.Script.Express
{
public class ExpProcedureSource : ExpImmutableElement
{
public override ExpElementType ElementType => ExpElementType.Procedure;
public override IScriptSourceProvider SourceProvider => throw new NotImplementedException();
public override string Name => throw new NotImplementedException();
public override void Analyse()
{
throw new NotImplementedException();
}
public override ExpNode MakeReference( params object[] options )
{
throw new NotImplementedException();
}
public override bool TryGetMember( string name, out ExpNode memberNode )
{
throw new NotImplementedException();
}
}
}
@@ -28,6 +28,8 @@
// //
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using Microsoft.CodeAnalysis.CSharp;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.Common; using System.Data.Common;
@@ -89,10 +91,40 @@ namespace StgSharp.Script.Express
}; };
} }
public static ExpBinaryOperatorNode ConvertElement( Token source, ExpNode left, ExpNode right ) public static ExpBinaryOperatorNode CompareInstanceEqual(
Token source,
ExpNode left,
ExpNode right )
{
return new ExpBinaryOperatorNode( source, left, right )
{
_returnType = ExpressCompile.ExpBool,
_nodeFlag = ExpNodeFlag.BuiltinType_Boolean | ExpNodeFlag.Operator_Binary,
CodeConvertTemplate = "!ReferenceEquals({0}, {1})",
};
}
public static ExpBinaryOperatorNode CompareInstanceNotEqual(
Token nsource,
ExpNode left,
ExpNode right )
{
return new ExpBinaryOperatorNode( nsource, left, right )
{
_returnType = ExpressCompile.ExpBool,
_nodeFlag = ExpNodeFlag.BuiltinType_Boolean | ExpNodeFlag.Operator_Binary,
CodeConvertTemplate = "ReferenceEquals({0}, {1})",
};
}
public static ExpBinaryOperatorNode ConvertElement(
Token source,
ExpNode left,
ExpNode right )
{ {
if( right is not ExpMetaRefNode metaref ) { if( right is not ExpMetaRefNode metaref ) {
throw new ExpInvalidTypeException( "<source of element>", right.EqualityTypeConvert.Name ); throw new ExpInvalidTypeException(
"<source of element>", right.EqualityTypeConvert.Name );
} }
return new ExpBinaryOperatorNode( source, left, right ) return new ExpBinaryOperatorNode( source, left, right )
{ {
@@ -0,0 +1,78 @@
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
// file="ExpProcedureCallingNode.cs"
// Project: StgSharp
// AuthorGroup: Nitload Space
// Copyright (c) Nitload Space. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the “Software”), to deal in the Software without restriction,
// including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software,
// and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and
// this permission notice shall be included in all copies
// or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED “AS IS”,
// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH
// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace StgSharp.Script.Express
{
public class ExpProcedureCallingNode : ExpNode
{
private ExpNode _params;
public ExpProcedureCallingNode( Token source, ExpProcedureSource caller, ExpNode param )
: base( source )
{
_params = param;
CalledProcedure = caller;
}
public override ExpNode Left => Empty;
public override ExpNode Right => _params;
public ExpProcedureSource CalledProcedure { get; init; }
public override IExpElementSource EqualityTypeConvert => ExpInstantiableElement.Void;
public static ExpProcedureCallingNode CallProcedure(
Token postion,
ExpProcedureSource caller,
ExpNode input )
{
ExpProcedureCallingNode node = new ExpProcedureCallingNode( postion, caller, input )
{
/*
* 0. parameters
*/
CodeConvertTemplate = $$"""
{{caller.Name}}( {0} )
"""
};
return node;
}
}
}
+5
View File
@@ -32,6 +32,7 @@ using StgSharp.Collections;
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Frozen; using System.Collections.Frozen;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -56,6 +57,8 @@ namespace StgSharp.Script.Express
public abstract bool TryGetFunction( string name, out ExpFunctionSource f ); public abstract bool TryGetFunction( string name, out ExpFunctionSource f );
public abstract bool TryGetProcedure( string name, out ExpProcedureSource p );
public abstract bool TryGetRule( string name, out ExpRuleSource r ); public abstract bool TryGetRule( string name, out ExpRuleSource r );
public abstract bool TryGetSchemaInclude( string name, out ExpSchema include ); public abstract bool TryGetSchemaInclude( string name, out ExpSchema include );
@@ -73,6 +76,8 @@ namespace StgSharp.Script.Express
protected ConcurrentStringHashMultiplexer StringMultiplexer => ExpressCompile.Multiplexer; protected ConcurrentStringHashMultiplexer StringMultiplexer => ExpressCompile.Multiplexer;
protected ConcurrentDictionary<string, ExpProcedureSource> ProcedureDict { get; set; }
protected FrozenDictionary<string, ExpRuleSource> RuleDict { get; set; } protected FrozenDictionary<string, ExpRuleSource> RuleDict { get; set; }
protected FrozenDictionary<string, ExpSchema> SchemaInclude { get; set; } protected FrozenDictionary<string, ExpSchema> SchemaInclude { get; set; }
@@ -97,11 +97,23 @@ namespace StgSharp.Script.Express
t, t,
"An ExpNode for function calling is needed, but a token was popped" ); "An ExpNode for function calling is needed, but a token was popped" );
} }
} else if( _context.TryGetProcedure( op.Value, out ExpProcedureSource? p ) )
{
if( !_cache.PopOperand( out Token t, out ExpNode? param ) )
{
node = ExpProcedureCallingNode.CallProcedure( op, p, param );
return node;
} else
{
throw new ExpCompileException(
t,
"An ExpNode for function calling is needed, but a token was popped" );
}
} else if( ExpSchema.BuiltinSchema.TryGetFunction( op.Value, out f ) ) } else if( ExpSchema.BuiltinSchema.TryGetFunction( op.Value, out f ) )
{ {
if( !_cache.PopOperand( out Token t, out ExpNode? p ) ) if( !_cache.PopOperand( out Token t, out ExpNode? param ) )
{ {
node = ExpFunctionCallingNode.CallFunction( op, f, p ); node = ExpFunctionCallingNode.CallFunction( op, f, param );
return node; return node;
} else } else
{ {
@@ -153,6 +165,12 @@ namespace StgSharp.Script.Express
case ExpKeyword.Assignment: case ExpKeyword.Assignment:
node = ExpBinaryOperatorNode.Assign( t, left, right ); node = ExpBinaryOperatorNode.Assign( t, left, right );
return true; return true;
case ExpKeyword.InstanceEqual:
node = ExpBinaryOperatorNode.CompareInstanceEqual( t, left, right );
return true;
case ExpKeyword.InstanceNotEqual:
node = ExpBinaryOperatorNode.CompareInstanceNotEqual( t, left, right );
return true;
default: default:
node = ExpNode.Empty; node = ExpNode.Empty;
return false; return false;
@@ -78,17 +78,22 @@ namespace StgSharp.Script.Express
public override bool TryGetConst( string name, out ExpElementInstance c ) public override bool TryGetConst( string name, out ExpElementInstance c )
{ {
return ConstDict.TryGetValue( name, out c ); return ConstDict.TryGetValue( name, out c! );
} }
public override bool TryGetEntity( string name, out ExpEntitySource e ) public override bool TryGetEntity( string name, out ExpEntitySource e )
{ {
return EntityDict.TryGetValue( name, out e ); return EntityDict.TryGetValue( name, out e! );
} }
public override bool TryGetFunction( string name, out ExpFunctionSource f ) public override bool TryGetFunction( string name, out ExpFunctionSource f )
{ {
return FunctionDict.TryGetValue( name, out f ); return FunctionDict.TryGetValue( name, out f! );
}
public override bool TryGetProcedure( string name, out ExpProcedureSource p )
{
throw new NotImplementedException();
} }
public override bool TryGetRule( string name, out ExpRuleSource r ) public override bool TryGetRule( string name, out ExpRuleSource r )
@@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7b7b5ee475ba81a574fedf4772a213a798ba4c27")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a4b2e9a8056c03f25a0aa3136f09d28ba86763fe")]
[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")]
[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+6
View File
@@ -98,6 +98,12 @@ namespace StgSharp
return false; return false;
} }
public override bool TryGetProcedure( string name, out ExpProcedureSource p )
{
p = null;
return false;
}
public override bool TryGetRule( string name, out ExpRuleSource r ) public override bool TryGetRule( string name, out ExpRuleSource r )
{ {
r = null; r = null;