mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-03 00:00:49 +08:00
优化了SereinEnv.WriteLine(Exception, InfoClass)输出,可以通过更改InfoClass控制是否输出异常堆栈信息。
优化了批量加载节点时,脚本节点类型分析异常的问题。
This commit is contained in:
@@ -21,12 +21,18 @@ namespace Serein.Script
|
||||
|
||||
private ProgramNode? programNode;
|
||||
|
||||
public Type ParserScript(Dictionary<string, Type> argTypes, string script)
|
||||
/// <summary>
|
||||
/// 解析脚本
|
||||
/// </summary>
|
||||
/// <param name="script">脚本</param>
|
||||
/// <param name="argTypes">挂载的变量</param>
|
||||
/// <returns></returns>
|
||||
public Type ParserScript(string script, Dictionary<string, Type>? argTypes = null)
|
||||
{
|
||||
SereinScriptParser parser = new SereinScriptParser();
|
||||
var programNode = parser.Parse(script);
|
||||
TypeAnalysis.NodeSymbolInfos.Clear(); // 清空符号表
|
||||
TypeAnalysis.LoadSymbol(argTypes); // 提前加载脚本节点定义的符号
|
||||
if(argTypes is not null) TypeAnalysis.LoadSymbol(argTypes); // 提前加载脚本节点定义的符号
|
||||
TypeAnalysis.Analysis(programNode); // 分析节点类型
|
||||
var returnType = TypeAnalysis.NodeSymbolInfos[programNode]; // 获取返回类型
|
||||
this.programNode = programNode;
|
||||
|
||||
@@ -623,7 +623,13 @@ namespace Serein.Script
|
||||
NextToken(); // 消耗 ")"
|
||||
break;
|
||||
}
|
||||
else if (peekToken.Type == TokenType.BraceLeft)
|
||||
{
|
||||
NextToken(); // 消耗 类型名称
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
TypeNode typeNode = new TypeNode(typeName);
|
||||
typeNode.SetTokenInfo(typeToken);
|
||||
ObjectInstantiationNode objectInstantiationNode = new ObjectInstantiationNode(typeNode, ctorArguments);
|
||||
|
||||
Reference in New Issue
Block a user