fix jison generation
This commit is contained in:
parent
c7ec44da09
commit
7bf877d820
|
@ -0,0 +1,18 @@
|
|||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const { transformJison } = require('./jisonTransformer');
|
||||
const fileRegex = /\.(jison)$/;
|
||||
|
||||
export default function jison() {
|
||||
return {
|
||||
name: 'jison',
|
||||
|
||||
transform(src, id) {
|
||||
if (fileRegex.test(id)) {
|
||||
return {
|
||||
code: transformJison(src),
|
||||
map: null, // provide source map if available
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
const { Generator } = require('jison');
|
||||
exports.transformJison = (src) => {
|
||||
const parser = new Generator(src, {
|
||||
moduleType: 'js',
|
||||
'token-stack': true,
|
||||
});
|
||||
const source = parser.generate({ moduleMain: '() => {}' });
|
||||
const exporter = `
|
||||
parser.parser = parser;
|
||||
export { parser };
|
||||
export default parser;
|
||||
`;
|
||||
return `${source} ${exporter}`;
|
||||
};
|
|
@ -1,4 +1,4 @@
|
|||
const { Generator } = require('jison');
|
||||
const { transformJison } = require('./jisonTransformer');
|
||||
const fs = require('fs');
|
||||
const { dependencies } = require('../package.json');
|
||||
|
||||
|
@ -91,9 +91,7 @@ const jisonPlugin = {
|
|||
build.onLoad({ filter: /\.jison$/ }, async (args) => {
|
||||
// Load the file from the file system
|
||||
const source = await fs.promises.readFile(args.path, 'utf8');
|
||||
const contents = new Generator(source, { 'token-stack': true }).generate({
|
||||
moduleMain: '() => {}', // disable moduleMain (default one requires Node.JS modules)
|
||||
});
|
||||
const contents = transformJison(source);
|
||||
return { contents, warnings: [] };
|
||||
});
|
||||
},
|
||||
|
|
61
jison.js
61
jison.js
|
@ -1,61 +0,0 @@
|
|||
const Jison = require('jison');
|
||||
const fileRegex = /\.(jison)$/;
|
||||
|
||||
export default function jison() {
|
||||
return {
|
||||
name: 'jison',
|
||||
|
||||
transform(src, id) {
|
||||
if (fileRegex.test(id)) {
|
||||
const parser = new Jison.Generator(src, {
|
||||
moduleType: 'js',
|
||||
// type,
|
||||
});
|
||||
const source = parser.generate();
|
||||
const exporter = `
|
||||
const parse = parser.parse.bind(parser);
|
||||
parser.parser = parse;
|
||||
|
||||
export { parser };
|
||||
export default parser;
|
||||
`;
|
||||
|
||||
// console.log('helll');
|
||||
|
||||
return {
|
||||
code: `${source} ${exporter}`,
|
||||
map: null, // provide source map if available
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// export default (options = {}) => ({
|
||||
// name: 'jison',
|
||||
// transform(grammar, id) {
|
||||
// const { include = ['*.jison', '**/*.jison'], exclude, type = 'lalr' } = options;
|
||||
// const filter = createFilter(include, exclude);
|
||||
// if (!filter(id)) return null;
|
||||
|
||||
// const parser = new Jison.Generator(grammar, {
|
||||
// moduleType: 'js',
|
||||
// type,
|
||||
// });
|
||||
|
||||
// const source = parser.generate();
|
||||
// const exporter = `
|
||||
// const parse = parser.parse.bind(parser);
|
||||
// parser.parser = parse;
|
||||
|
||||
// export { parser };
|
||||
// export default parser;
|
||||
// `;
|
||||
|
||||
// console.log('helll');
|
||||
// return {
|
||||
// code: `${source} ${exporter}`,
|
||||
// map: { mappings: '' },
|
||||
// };
|
||||
// },
|
||||
// });
|
|
@ -1,6 +1,6 @@
|
|||
import { resolve } from 'path';
|
||||
import { defineConfig } from 'vite';
|
||||
import jison from './jison';
|
||||
import jison from './.esbuild/jison';
|
||||
export default defineConfig({
|
||||
plugins: [jison()],
|
||||
resolve: {
|
||||
|
@ -16,11 +16,22 @@ export default defineConfig({
|
|||
rollupOptions: {
|
||||
// make sure to externalize deps that shouldn't be bundled
|
||||
// into your library
|
||||
output: {
|
||||
name: 'mermaid',
|
||||
// Provide global variables to use in the UMD build
|
||||
// for externalized deps
|
||||
},
|
||||
external: ['require', 'fs', 'path'],
|
||||
output: [
|
||||
{
|
||||
name: 'mermaid',
|
||||
format: 'esm',
|
||||
// Provide global variables to use in the UMD build
|
||||
// for externalized deps
|
||||
},
|
||||
{
|
||||
name: 'mermaid',
|
||||
format: 'umd',
|
||||
|
||||
// Provide global variables to use in the UMD build
|
||||
// for externalized deps
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue