645a73d6af
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` 中的导入语句。 |
||
---|---|---|
src | ||
.env | ||
.env.preview-es | ||
.env.preview-umd | ||
.eslintignore | ||
.eslintrc.yml | ||
.gitignore | ||
.nvmrc | ||
index.html | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json | ||
tsconfig.node.json | ||
vite.config.ts |
dt-sql-parser-semantic-analyse-plugin
A dt-sql-parser plugin with semantic result. Theory.
Installation
npm install dt-sql-parser-semantic-analyse-plugin
Quick Usage
const myPlugin = new DtSqlParserSemAnalysePlugin()
const sql = 'SELECT a| FROM t'
const caretColumn = sql.indexOf('|') + 1
const result = myPlugin.parse(sql.replace('|', ''), { lineNumber: 1, columnNumber: caretColumn })
console.log(result)
This will use a postgresql Parser and build-in rules/preprocessors
Add a Rule Chain
import { PostgresSQL } from 'dt-sql-parser'
import { PostgreSQLParser } from 'dt-sql-parser/dist/lib/pgsql/PostgreSQLParser'
const myPlugin = new DtSqlParserSemAnalysePlugin({
parse: {
parser: new PostgresSQL()
stmts: [
'selectstmt'
],
entities: [
'column_name'
],
rules: {
'select_columns': [
PostgreSQLParser.RULE_insertstmt,
PostgreSQLParser.RULE_column_name
]
}
}
})
const sql = 'SELECT a| FROM t'
const caretColumn = sql.indexOf('|') + 1
const result = myPlugin.parse(sql.replace('|', ''), { lineNumber: 1, columnNumber: caretColumn })
console.log(result)
Notice: A rule must start with a/an statement/entity and stop with an entity. You should add a node keywords(keyword is in your parser with format: RULE_[keyword]
) into stmts/entities before using it.
Add a preprocessor
const myPlugin = new DtSqlParserSemAnalysePlugin({
preprocessor: [
(sql) => sql.toUpperCase()
})