11/* eslint-env node */
22
3- 'use strict' ;
3+ import assert from 'node:assert/strict' ;
4+ import fs from 'node:fs' ;
45
5- // --------------------------------------------------------------------
6- // Imports
7- // --------------------------------------------------------------------
8-
9- const fs = require ( 'fs' ) ;
10- const path = require ( 'path' ) ;
11-
12- const es5 = require ( './src/es5' ) ;
13- const ohm = require ( 'ohm-js' ) ;
6+ import * as es5 from './src/es5.js' ;
7+ import initES6 from './src/es6.js' ;
8+ import * as ohm from 'ohm-js' ;
149
1510// --------------------------------------------------------------------
1611// Helpers
@@ -20,19 +15,6 @@ function removeShebang(source) {
2015 return source . slice ( 0 , 2 ) === '#!' ? source . replace ( '#!' , '//' ) : source ;
2116}
2217
23- function loadModule ( name ) {
24- const ns = { ES5 : es5 . grammar } ;
25- if ( fs . existsSync ( name ) ) {
26- return require ( name ) ( ohm , ns , es5 . semantics ) ;
27- }
28- const relPath = path . join ( __dirname , 'src' , name ) ;
29- const modulePath = require . resolve ( relPath ) ;
30- if ( modulePath ) {
31- return require ( modulePath ) ( ohm , ns , es5 . semantics ) ;
32- }
33- throw new Error ( "Error: Cannot find grammar module '" + name + "'" ) ;
34- }
35-
3618// --------------------------------------------------------------------
3719// Main
3820// --------------------------------------------------------------------
@@ -60,7 +42,8 @@ function compile(args) {
6042 }
6143 }
6244
63- const lang = opts . grammar ? loadModule ( opts . grammar ) : es5 ;
45+ assert ( ! opts . grammar || [ 'es5' , 'es6' ] . includes ( opts . grammar ) ) ;
46+ const lang = opts . grammar === 'es6' ? initES6 ( ohm , { ES5 : es5 . grammar } , es5 . semantics ) : es5 ;
6447
6548 const files = filenames . map ( name => {
6649 // If benchmarking, read in all the files at once, so that we can just time the matching.
@@ -104,8 +87,9 @@ function compile(args) {
10487 return null ;
10588}
10689
107- module . exports = compile ;
90+ export { compile } ;
10891
109- if ( require . main === module ) {
92+ // `importa.meta.main` was added in Node v24.2.0.
93+ if ( import . meta. main ) {
11094 console . log ( compile ( process . argv . slice ( 2 ) ) ) ;
11195}
0 commit comments