daily update on 20250220 by nitload youmu, building AST generator, correct type naming

This commit is contained in:
Nitload
2025-02-21 08:11:26 +08:00
parent ccef0de6f6
commit 83bde12d22
98 changed files with 4182 additions and 1855 deletions
@@ -44,10 +44,32 @@ namespace StgSharp.Script.Express
public partial class ExpSchemaSource
{
private Dictionary<string, IExpElementSource> _sourceCache = new();
private static Regex
_constDefineBegin = GetConstDefineBegin(),
_constDefineEnd = GetConstDefineEnd(),
_schemaBegin = GetSchemaBegin(),
_schemaEnd = GetSchemaEnd(),
_entityDefineBegin = GetEntityDefineBegin(),
_entityDefineEnd = GetEntityDefineEnd(),
_typeDefineBegin = GetTypeDefineBegin(),
_typeDefineEnd = new Regex(
@"\s*END_TYPE\s*;\s*--\s*(?<TypeName>[a-zA-Z0-9_]+)",
RegexOptions.Compiled ),
_functionDefineBegin = new Regex(
@"\s*FUNCTION\s*\s*(?<FunctionName>[a-zA-Z0-9_]+)\s*(?<Remaining>.*)",
RegexOptions.Compiled ),
_functionDefineEnd = new Regex(
@"\s*END_FUNCTION\s*;\s*--\s*(?<FunctionName>[a-zA-Z0-9_]+)",
RegexOptions.Compiled ),
_ruleDefineBegin = new Regex(
@"\s*RULE\s*(?<RuleName>[a-zA-Z0-9_]+)\s*FOR\s*\((?<Target>[a-zA-Z0-9_]*(\s*\)\s*;)?)",
RegexOptions.Compiled ),
_ruleDefineEnd = GetRuleDefineEnd();
private readonly ExpSchema _compileResult = new ExpSchema();
private List<IExpElementSource> _sourceCache = new();
private string name;
public ExpSchemaSource() { }
@@ -69,15 +91,15 @@ namespace StgSharp.Script.Express
while( !_schemaEnd.IsMatch( line ) ) {
if( TryReadConst( line, reader,
out IExpElementSource source ) ) {
_sourceCache.Add( source.Name, source );
_sourceCache.Add( source );
} else if( TryReadType( line, reader, out source ) ) {
_sourceCache.Add( source.Name, source );
_sourceCache.Add( source );
} else if( TryReadEntity( line, reader, out source ) ) {
_sourceCache.Add( source.Name, source );
_sourceCache.Add( source );
} else if( TryReadRule( line, reader, out source ) ) {
_sourceCache.Add( source.Name, source );
_sourceCache.Add( source );
} else if( TryReadFunction( line, reader, out source ) ) {
_sourceCache.Add( source.Name, source );
_sourceCache.Add( source );
}
line = reader.ReadLine();
}
@@ -99,24 +121,19 @@ namespace StgSharp.Script.Express
if( _source.TryReadConst(
firstLine, reader,
out IExpElementSource _elementSource ) ) {
_source._sourceCache
.Add( _elementSource.Name, _elementSource );
_source._sourceCache.Add( _elementSource );
} else if( _source.TryReadType(
firstLine, reader, out _elementSource ) ) {
_source._sourceCache
.Add( _elementSource.Name, _elementSource );
_source._sourceCache.Add( _elementSource );
} else if( _source.TryReadEntity(
firstLine, reader, out _elementSource ) ) {
_source._sourceCache
.Add( _elementSource.Name, _elementSource );
_source._sourceCache.Add( _elementSource );
} else if( _source.TryReadRule(
firstLine, reader, out _elementSource ) ) {
_source._sourceCache
.Add( _elementSource.Name, _elementSource );
_source._sourceCache.Add( _elementSource );
} else if( _source.TryReadFunction(
firstLine, reader, out _elementSource ) ) {
_source._sourceCache
.Add( _elementSource.Name, _elementSource );
_source._sourceCache.Add( _elementSource );
}
firstLine = reader.ReadLine();
}
@@ -130,9 +147,34 @@ namespace StgSharp.Script.Express
[GeneratedRegex( @"\s*END_CONSTANT;" )]
private static partial Regex GetConstDefineEnd();
[GeneratedRegex(
@"\s*ENTITY\s*(?<TypeName>[A-Za-z0-9_]+)\s*",
RegexOptions.Compiled )]
private static partial Regex GetEntityDefineBegin();
[GeneratedRegex(
@"\s*END_ENTITY;\s*--\s*(?<TypeName>[A-Za-z0-9_]+)\s*",
RegexOptions.Compiled )]
private static partial Regex GetEntityDefineEnd();
[GeneratedRegex(
@"\s*END_RULE\s*;\s*--\s*(?<RuleName>[A-Za-z0-9_]+)",
RegexOptions.Compiled )]
private static partial Regex GetRuleDefineEnd();
[GeneratedRegex( @"\s*SCHEMA\s*(?<namespace>[A-Za-z0-9_]+)\s?;" )]
private static partial Regex GetSchemaBegin();
[GeneratedRegex(
@"END_SCHEMA;\s*--\s*(?<namespace>[A-Za-z0-9_]+)",
RegexOptions.Compiled )]
private static partial Regex GetSchemaEnd();
[GeneratedRegex(
@"\s*TYPE\s+(?<TypeName>[A-Za-z0-9_]+)\s*=\s*(?<Remaining>[A-Z]+)",
RegexOptions.Compiled )]
private static partial Regex GetTypeDefineBegin();
private bool TryReadConst(
string firstLine,
ExpFileSource reader,
@@ -287,37 +329,5 @@ namespace StgSharp.Script.Express
return false;
}
private static Regex
_constDefineBegin = GetConstDefineBegin(),
_constDefineEnd = GetConstDefineEnd(),
_schemaBegin = GetSchemaBegin(),
_schemaEnd = new Regex(
@"END_SCHEMA;\s*--\s*(?<namespace>[A-Za-z0-9_]+)",
RegexOptions.Compiled ),
_entityDefineBegin = new Regex(
@"\s*ENTITY\s*(?<TypeName>[A-Za-z0-9_]+)\s*",
RegexOptions.Compiled ),
_entityDefineEnd = new Regex(
@"\s*END_ENTITY;\s*--\s*(?<TypeName>[A-Za-z0-9_]+)\s*",
RegexOptions.Compiled ),
_typeDefineBegin = new Regex(
@"\s*TYPE\s+(?<TypeName>[A-Za-z0-9_]+)\s*=\s*(?<Remaining>[A-Z]+)",
RegexOptions.Compiled ),
_typeDefineEnd = new Regex(
@"\s*END_TYPE\s*;\s*--\s*(?<TypeName>[a-zA-Z0-9_]+)",
RegexOptions.Compiled ),
_functionDefineBegin = new Regex(
@"\s*FUNCTION\s*\s*(?<FunctionName>[a-zA-Z0-9_]+)\s*(?<Remaining>.*)",
RegexOptions.Compiled ),
_functionDefineEnd = new Regex(
@"\s*END_FUNCTION\s*;\s*--\s*(?<FunctionName>[a-zA-Z0-9_]+)",
RegexOptions.Compiled ),
_ruleDefineBegin = new Regex(
@"\s*RULE\s*(?<RuleName>[a-zA-Z0-9_]+)\s*FOR\s*\((?<Target>[a-zA-Z0-9_]*(\s*\)\s*;)?)",
RegexOptions.Compiled ),
_ruleDefineEnd = new Regex(
@"\s*END_RULE\s*;\s*--\s*(?<RuleName>[A-Za-z0-9_]+)",
RegexOptions.Compiled );
}
}