EP RScript 仍存在一些问题, 但是能够运行

This commit is contained in:
2025-10-09 18:02:00 +08:00
parent a8cfb012fc
commit f8d81d9198
14 changed files with 756 additions and 573 deletions

View File

@@ -0,0 +1,43 @@
using Convention.RScript.Parser;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Convention.RScript
{
public class RScriptEngine
{
private ExpressionParser parser;
private RScriptContext context;
public Dictionary<string, RScriptVariableEntry> Run(string script, RScriptImportClass import = null, RScriptVariables variables = null)
{
parser = new(new());
string newScript = "";
foreach (var item in script.Split('\n'))
{
var line = item.Trim();
if (string.IsNullOrEmpty(line))
continue;
if (line.StartsWith("//"))
continue;
if (line.StartsWith('#'))
continue;
newScript += line + ";"; // 添加分号分隔符
}
// 按分号分割并过滤空语句
var statements = newScript.Split(';', StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Trim())
.Where(s => !string.IsNullOrEmpty(s))
.ToArray();
context = new(statements, import, variables);
foreach (var type in context.Import)
parser.context.Imports.AddType(type);
return context.Run(parser);
}
}
}