build: add antlr4 compile script

This commit is contained in:
xiaowei 2020-09-09 14:11:04 +08:00
parent d86a6e7638
commit 68800312d3
17 changed files with 28 additions and 255682 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ package-lock.json
.vscode
.history
lib/
src/**/.antlr

Binary file not shown.

View File

@ -1,31 +1,35 @@
const path = require('path');
const exec = require('child_process').exec;
const antlr4 = path.resolve(__dirname, 'antlr-4.8-complete.jar');
const grammars = path.resolve(__dirname, '../src/grammar');
const output = path.resolve(__dirname, '../src/parser');
const languages = [
const entry = [
'generic',
'mysql',
// 'oracle',
// 'flink',
// 'hive',
// 'impala',
// 'libra',
// 'spark',
// 'tidb'
'hive',
'plsql',
'spark',
'tsql',
];
languages.forEach(language => {
exec(`npx antlr4-tool -l ts -o ${grammars}/${language}/parser ${grammars}/${language}/*.g4`, (error) => {
console.log('error:', error)
})
// const compiledResults = antlr4Tool.compile({
// language: 'ts', // Only support for JavaScript & TypeScript
// grammarFiles: [`${grammars}/${language}/*.g4`],
// outputDirectory: `${grammars}/${language}/parser`
// });
})
entry.forEach((language) => {
const cmd = `
java -jar ${antlr4}
-Dlanguage=JavaScript
-visitor
-listener
-o ${output}/${language}
${grammars}/${language}/*.g4
`.replace(/\n/g, '');
console.log('cmd:', cmd);
exec(cmd, (err) => {
if (err) {
console.error('Antlr4 build error: ' + language, err);
} else {
console.log(`Build ${language} success.`);
}
});
});

View File

View File

@ -14,7 +14,7 @@
],
"main": "lib/index.js",
"scripts": {
"build:parser": "node build/antlr4.js",
"antlr": "node build/antlr4.js",
"build": "npm test && rm -rf lib && tsc",
"eslint": "eslint ./src/**/*.ts",
"check-types": "tsc --skipLibCheck",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff