JQL AST (英语)
JQL抽象语法树(JAST)是一种json schema,用于代表已解析的JQL.
目标
- 一个平台的Jast应该作为另一个平台的jast重新使用(Java QQ JS iOS)
- 包含足够的信息, 以产生丰富的 JQL 编辑体验( 如语法突出显示)
- 代表无效和部分形成的 JQL(并包含关于语法错误的详细资料)
贾斯特不是
- 并不代表真实语法中出现的每一个细节,而只是结构或内容相关的细节(例如,树状结构中隐含了括号,所以它们不作为节点包含)
- 不包含任何针对单个Jira实例的数据(除原JQL查询本身的字符串外). eg:对现有领域/用户/价值/操作者没有了解
- 不应在Jast上进行语法验证(使用科技委进行)
- 不应使用 Jast 自动填充建议(使用科技委进行)
使用大小写
- 语法突出显示
- 渲染错误
基本用途
要生成 AST 您需要您想要解析的 JQL 字符串和 a JastBuilder。 。 。 .
import { JastBuilder, Jast } from "@atlassianlabs/jql-ast";
const someJqlQuery = 'issuetype = bug';
const myJast: Jast = new JastBuilder().build(someJqlQuery);
安装
yarn add @atlassianlabs/jql-ast
文档
参见 文档 更多细节.
财务问题
为什么我们需要一个Abstact语法树(在免费的科技委员会之上)?
ANTR4 自动生成的解析器已经从 JQL 字符串中生成了混凝土语法树 。 这棵树比 为什么不能用它呢?
科技委员会并没有立即实现上述所有目标。 但还有其他的 需要提及的差异:
- 生产出来的CST不是直接在我们控制之下,所以更新到ANTLR4语法执行只需要引起 更新到 AST 生成器, 不需要 UI 组件更新 .
- 科技委员会本身不是可序列的,但我们可以发送一个预分解的AST,以便在不装入的情况下在SSSR中提早制取 全解析器和ANTR4 运行时间立即.
- 由于我们控制了AST的创建,我们可以在逻辑上一致地进行转换,而不经过 再来一遍.
- 我们可以对树进行合理的简化,例如把命令BY合并到一个终端节点而不是三个, 折叠非活动操作器等 .
支助
对于在Atlassian以外的开发者寻求帮助或报告问题, 请在社区论坛发表文章。 。 。 . 我们将监测这些论坛,并重新将专题分配给适当的维护者.
许可证
版权(c) 2021-2022 阿特拉斯人等. Apache 2.0 许可证,见 自由主义 文档.