1.完成控制流label/goto的使用2.升级Parse解析器3.Judgement的还原依然存在问题

This commit is contained in:
2025-10-08 12:06:37 +08:00
parent ed0dc0b523
commit 0c11c917c4
4 changed files with 170 additions and 86 deletions

View File

@@ -4,6 +4,7 @@ using System.IO;
using System.Linq;
using System.Reflection;
using Convention;
using UnityEngine;
namespace Demo.Editor
{
@@ -18,9 +19,12 @@ namespace Demo.Editor
private static void WriteCPPClassBase(StreamWriter stream, Type currentType)
{
if (currentType == typeof(ScriptableObject))
{
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
{
// <20><><EFBFBD>ƹ<EFBFBD><C6B9>ߺ<EFBFBD>
stream.WriteLine("#define __build_in_pragma #");
stream.WriteLine("#define __build_in_to_text(x) #x");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B6A8><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in asm.GetTypes())
{
@@ -36,11 +40,31 @@ namespace Demo.Editor
}
}
}
stream.Write(@"/*
// <20><><EFBFBD><EFBFBD>Mathf
foreach (var method in typeof(Mathf).GetMethods())
{
stream.WriteLine($"#define {method.Name}({string.Join(',', from param in method.GetParameters() select param.Name)})");
}
// <20><><EFBFBD><EFBFBD>label<65><6C>goto
stream.Write(@"
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ
*/
");
stream.Write($"#define label(label_name) __build_in_pragma define label_name\n\n");
stream.Write(@"
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>a>bʱ<62><CAB1>ת<EFBFBD><D7AA>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>label<65><6C>
*/
");
stream.Write($"#define goto(a,b,label_name)\n\n");
// <20><><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
stream.Write(@"
/*
<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󽫻<EFBFBD>ԭ
e.g: LoadSubScript(SplineCore, ""SplineCore.h"") with(r = 1, g = 1, b = 1);
*/");
*/
");
stream.Write($"#define with(...)\n\n");
return;
}
@@ -56,9 +80,6 @@ e.g: LoadSubScript(SplineCore, ""SplineCore.h"") with(r = 1, g = 1, b = 1);
{
if (name == nameof(ScriptableObject.LoadSubScript))
{
stream.WriteLine("#define __build_in_pragma #");
stream.WriteLine("#define __build_in_to_text(x) #x");
stream.Write("/*\n" + description + "\n*/\n");
stream.Write($"#define {name}({string.Join(',', paramList)}) __build_in_pragma include {paramList.ToArray()[1]}\n\n");
//stream.Write($"#define {name}({string.Join(',', paramList)})\n\n");