🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > ## 注释处理器: - 解析注释生成AST(抽象语法树) - 根据AST进行编译、索引、信息提取或分析处理 - 不直接生成源码,注释只用于元信息或文档 - 例如Javadoc可以生成文档,CheckStyle可以进行静态分析 > ## 语言模型API: - 解析注释生成AST - 根据AST生成目标源码 - 可以编译和执行生成的源码 - 注释驱动了源码的生成,注释变成了一种语言 - 例如使用JavaCC可以定义SQL注释,并根据注释生成SQL语句 二者的主要差异在于**是否最终生成并可执行源码**。注释处理器更注重利用注释进行其他处理(文档、分析等),而不直接生成源码。**语言模型API则将注释视为一种语言**,并根据注释生成可执行的源码,这是一种源码生成方式。 > ## 注释处理器实现步骤: 1. 定义注释结构和语法 2. 解析注释生成AST 3. 编译AST生成文档 4. 构建索引 5. 信息提取 6. 分析处理 > ## 语言模型API实现步骤: 1. 定义注释结构和语法(对应语言语义) 2. 解析注释生成AST 3. 根据AST生成目标源码 4. 源码重构(可选) 5. 源码编译(可选,如果执行) 6. 执行源码(可选) > ## 代码示例: ### 1. 注释处理器(生成文档): ``` java /** * @author John * @version 1.0 */ public class Hello { // ... } ``` ### 2. 语言模型API(生成SQL): ``` sql /** * @select * from table */ ``` 解析注释: ``` java /** * @author John * @version 1.0 */ Comment -> AuthorTag -> "John" -> VersionTag -> "1.0" ``` sql ``` /** * @select * from table */ Select -> "*" From -> "table" ``` ### 3. 注释处理器(生成文档): ``` html <p><b>@author</b> John</p> <p><b>@version</b> 1.0</p> ``` ### 4. 语言模型API(生成SQL): ``` sql select * from table ``` > 总结: 注释处理器和语言模型API都可以解析注释并进行处理,但最终产出不同: - 注释处理器:文档、索引、信息、分析等 - 语言模型API:可执行的源码 > 注释处理器更侧重于注释本身及其信息,语言模型API则将注释视为实现新语言的一种方式。两者为我们提供了利用注释进行各种处理的灵活手段。 > 理解注释处理器和语言模型API的区别和应用场景,可以更好地**设计注释结构及其处理流程**,实现定制的需求与效果。