using CodePlay.Core.Models; using CodePlay.Core.Common; namespace CodePlay.Core.Interfaces; /// /// 语言解析器接口 /// public interface IParser { /// /// 解析源代码并生成 AST /// /// 源代码 /// 取消令牌 /// 语法树 Task ParseAsync(string sourceCode, CancellationToken cancellationToken = default); } /// /// 代码转换器接口 /// public interface IConverter { /// /// 转换语法树 /// /// 源语言语法树 /// 目标语言 /// 转换选项 /// 取消令牌 /// 转换结果 Task ConvertAsync(SyntaxTree syntaxTree, LanguageType targetLanguage, ConversionOptions? options = null, CancellationToken cancellationToken = default); } /// /// 代码生成器接口 /// public interface ICodeGenerator { /// /// 从语法树生成代码 /// /// 语法树 /// 生成的代码 string Generate(SyntaxTree syntaxTree); } /// /// 编译验证器接口 /// public interface ICompilerValidator { /// /// 编译并验证代码 /// /// 代码 /// 语言类型 /// 取消令牌 /// 验证结果 Task ValidateAsync(string code, LanguageType language, CancellationToken cancellationToken = default); } /// /// 自动修复引擎接口 /// public interface IAutoFixEngine { /// /// 尝试修复编译错误 /// /// 代码 /// 编译错误列表 /// 当前修复轮次 /// 取消令牌 /// 修复结果 Task FixAsync(string code, List errors, int round, CancellationToken cancellationToken = default); } /// /// 转换策略接口 /// public interface IConversionStrategy { /// /// 源语言 /// LanguageType SourceLanguage { get; } /// /// 目标语言 /// LanguageType TargetLanguage { get; } /// /// 转换语法节点 /// /// 语法节点 /// 转换上下文 /// 转换后的节点 SyntaxNode ConvertNode(SyntaxNode node, ConversionContext context); /// /// 映射类型 /// /// 源类型名称 /// 目标类型名称 string MapType(string sourceType); } /// /// 语法树 /// public class SyntaxTree { /// /// 语言类型 /// public LanguageType Language { get; set; } /// /// 根节点 /// public SyntaxNode Root { get; set; } = new(); /// /// 源文件路径 /// public string? SourceFilePath { get; set; } /// /// 原始源代码 /// public string? SourceCode { get; set; } /// /// 注释列表 /// public List Comments { get; set; } = new(); /// /// 文档字符串列表 /// public List Documentation { get; set; } = new(); } /// /// 语法节点 /// public class SyntaxNode { /// /// 节点类型 /// public SyntaxNodeType Type { get; set; } /// /// 节点文本 /// public string Text { get; set; } = string.Empty; /// /// 子节点列表 /// public List Children { get; set; } = new(); /// /// 元数据 /// public Dictionary Metadata { get; set; } = new(); /// /// 父节点 /// public SyntaxNode? Parent { get; set; } /// /// 是否为不可转换语法 /// public bool IsUnconvertible { get; set; } /// /// TODO 说明(当 IsUnconvertible 为 true 时) /// public string? TodoDescription { get; set; } } /// /// 语法节点类型 /// public enum SyntaxNodeType { /// /// 未知 /// Unknown = 0, /// /// 编译单元 /// CompilationUnit = 1, /// /// 命名空间 /// Namespace = 2, /// /// 类 /// Class = 3, /// /// 接口 /// Interface = 4, /// /// 方法 /// Method = 5, /// /// 属性 /// Property = 6, /// /// 字段 /// Field = 7, /// /// 构造函数 /// Constructor = 8, /// /// 语句 /// Statement = 9, /// /// 表达式 /// Expression = 10, /// /// 类型 /// Type = 11, /// /// 参数 /// Parameter = 12, /// /// 注释 /// Comment = 13, /// /// 文档注释 /// DocumentationComment = 14 } /// /// 语法注释 /// public class SyntaxComment { /// /// 注释类型 /// public CommentType Type { get; set; } /// /// 注释文本 /// public string Text { get; set; } = string.Empty; /// /// 行号 /// public int LineNumber { get; set; } } /// /// 注释类型 /// public enum CommentType { /// /// 单行注释 // /// SingleLine = 0, /// /// 多行注释 /* */ /// MultiLine = 1, /// /// XML 文档注释 /// /// XmlDoc = 2, /// /// JavaDoc /** */ /// JavaDoc = 3, /// /// Doxygen /// 或 /** */ /// Doxygen = 4 } /// /// 语法文档 /// public class SyntaxDocumentation { /// /// 文档所属元素 /// public string ElementName { get; set; } = string.Empty; /// /// 文档内容 /// public string Content { get; set; } = string.Empty; /// /// 文档格式 /// public DocFormat Format { get; set; } } /// /// 文档格式 /// public enum DocFormat { /// /// XML Doc (C#) /// XmlDoc = 0, /// /// JavaDoc (Java) /// JavaDoc = 1, /// /// Doxygen (C++) /// Doxygen = 2 } /// /// 转换上下文 /// public class ConversionContext { /// /// 源语言 /// public LanguageType SourceLanguage { get; set; } /// /// 目标语言 /// public LanguageType TargetLanguage { get; set; } /// /// 转换选项 /// public ConversionOptions? Options { get; set; } /// /// 问题列表 /// public List Issues { get; set; } = new(); /// /// TODO 列表 /// public List TodoItems { get; set; } = new(); /// /// 转换日志 /// public List Logs { get; set; } = new(); } /// /// 修复结果 /// public class FixResult { /// /// 是否可以修复 /// public bool CanFix { get; set; } /// /// 修复后的代码 /// public string? FixedCode { get; set; } /// /// 修复说明 /// public string? FixDescription { get; set; } /// /// 剩余错误列表 /// public List RemainingErrors { get; set; } = new(); } /// /// 编译验证结果 /// public class CompilationResult { /// /// 是否成功 /// public bool Success { get; set; } /// /// 编译输出 /// public string Output { get; set; } = string.Empty; /// /// 错误列表 /// public List Errors { get; set; } = new(); /// /// 警告列表 /// public List Warnings { get; set; } = new(); }