lava-dt-sql-parser-semantic.../src/parse/index.ts
Kijin-Seija 645a73d6af 0.0.1-alpha.6:
1. 修改 `package.json` 中的项目名称和版本号。
2. 更新 `node_modules` 中的依赖包版本。
3. 修改 `src/index.ts` 中的 SQL 语句和 `caretColumn` 的计算方式。
4. 修改 `src/parse/default-rules.ts` 中的规则和导入语句。
5. 修改 `src/parse/visitor.ts` 中的访问者和规则。
6. 修改 `src/preprocess/default-preprocessor.ts` 中的预处理逻辑。
7. 修改 `src/types.ts` 中的导入语句。
2024-04-15 17:48:24 +08:00

24 lines
800 B
TypeScript

import { PostgreSQL } from 'dt-sql-parser'
import { SQLVisitor } from './visitor'
import { type SQLParseResult } from '../types'
import { type BasicSQL } from 'dt-sql-parser/dist/parser/common/basicSQL'
export function parse (
sql: string,
parser: BasicSQL = new PostgreSQL(),
stmts: string[] = [],
entities: string[] = [],
rules: Record<string, number[]> = {},
alias: Record<string, string> = {},
): SQLParseResult {
const tree = parser.parse(sql)
console.log('tree', tree)
const visitor = new SQLVisitor()
visitor.visitorAlias = alias
stmts.forEach(stmt => { visitor.addStmt(stmt) })
entities.forEach(entity => { visitor.addEntity(entity) })
Object.keys(rules).forEach(name => { visitor.addRules(name, rules[name]) })
visitor.visit(tree)
return visitor.getResult()
}