diff --git a/.gitmodules b/.gitmodules index 98f528316..26c8d58fd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -30,10 +30,10 @@ url = https://github.com/tree-sitter/tree-sitter-typescript.git [submodule "parsers/modelica"] path = parsers/modelica - url = https://github.com/OpenModelica/tree-sitter-modelica.git + url = https://github.com/rien/tree-sitter-modelica.git [submodule "parsers/r"] path = parsers/r - url = https://github.com/rien/tree-sitter-r.git + url = https://github.com/r-lib/tree-sitter-r.git branch = next [submodule "parsers/sql"] path = parsers/sql diff --git a/cli/package.json b/cli/package.json index 12e490715..d4aa02810 100644 --- a/cli/package.json +++ b/cli/package.json @@ -42,7 +42,7 @@ "commander": "^11.1.0", "csv-stringify": "^6.5.0", "open": "^10.1.0", - "tree-sitter": "^0.20.6" + "tree-sitter": "^0.21.1" }, "bugs": { "url": "https://github.com/dodona-edu/dolos/issues" diff --git a/flake.lock b/flake.lock index 5e040e290..880526e32 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ ] }, "locked": { - "lastModified": 1708939976, - "narHash": "sha256-O5+nFozxz2Vubpdl1YZtPrilcIXPcRAjqNdNE8oCRoA=", + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", "owner": "numtide", "repo": "devshell", - "rev": "5ddecd67edbd568ebe0a55905273e56cc82aabe3", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "type": "github" }, "original": { @@ -30,11 +30,11 @@ ] }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -45,11 +45,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1708984720, - "narHash": "sha256-gJctErLbXx4QZBBbGp78PxtOOzsDaQ+yw1ylNQBuSUY=", + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "13aff9b34cc32e59d35c62ac9356e4a41198a538", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 1b32f8ee0..8123dc50e 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,7 @@ overlays = [ devshell.overlays.default (self: super: { - nodejs = super.nodejs_21; + nodejs = super.nodejs_22; }) ]; }; diff --git a/lib/package.json b/lib/package.json index c708c41e5..251de3534 100644 --- a/lib/package.json +++ b/lib/package.json @@ -35,13 +35,13 @@ "eslint": "8.57.0", "node-gyp": "^9.4.1", "typescript": "5.4.5", - "tree-sitter-json": "0.20.2" + "tree-sitter-json": "0.21.0" }, "dependencies": { "@dodona/dolos-parsers": "1.1.0", "@dodona/dolos-core": "1.0.2", "d3-dsv": "^3.0.1", - "tree-sitter": "^0.20.6" + "tree-sitter": "^0.21.1" }, "bugs": { "url": "https://github.com/dodona-edu/dolos/issues" diff --git a/lib/src/test/snapshots/tokenizer.test.ts.md b/lib/src/test/snapshots/tokenizer.test.ts.md index f81f804eb..cfb4fe133 100644 --- a/lib/src/test/snapshots/tokenizer.test.ts.md +++ b/lib/src/test/snapshots/tokenizer.test.ts.md @@ -1907,8 +1907,6 @@ Generated by [AVA](https://avajs.dev). 'identifier', ')', '(', - 'equals_value_clause', - '(', 'conditional_expression', '(', 'invocation_expression', @@ -1934,14 +1932,13 @@ Generated by [AVA](https://avajs.dev). '(', 'character_literal', '(', - 'character_literal_unescaped', + 'character_literal_content', ')', ')', '(', 'character_literal', '(', - 'character_literal_unescaped', - ')', + 'character_literal_content', ')', ')', ')', @@ -2059,13 +2056,7 @@ Generated by [AVA](https://avajs.dev). '(', 'lambda_expression', '(', - 'implicit_parameter_list', - '(', - 'parameter', - '(', - 'identifier', - ')', - ')', + 'implicit_parameter', ')', '(', 'invocation_expression', @@ -2188,12 +2179,9 @@ Generated by [AVA](https://avajs.dev). 'identifier', ')', '(', - 'equals_value_clause', - '(', 'string_literal', '(', - 'string_literal_fragment', - ')', + 'string_literal_content', ')', ')', ')', @@ -2228,14 +2216,11 @@ Generated by [AVA](https://avajs.dev). 'identifier', ')', '(', - 'equals_value_clause', - '(', 'identifier', ')', ')', ')', ')', - ')', '(', 'expression_statement', '(', @@ -2268,9 +2253,6 @@ Generated by [AVA](https://avajs.dev). 'identifier', ')', '(', - 'assignment_operator', - ')', - '(', 'invocation_expression', '(', 'identifier', @@ -2315,7 +2297,7 @@ Generated by [AVA](https://avajs.dev). '(', 'string_literal', '(', - 'string_literal_fragment', + 'string_literal_content', ')', ')', '(', @@ -2334,9 +2316,6 @@ Generated by [AVA](https://avajs.dev). 'identifier', ')', '(', - 'assignment_operator', - ')', - '(', 'invocation_expression', '(', 'identifier', @@ -2381,7 +2360,7 @@ Generated by [AVA](https://avajs.dev). '(', 'string_literal', '(', - 'string_literal_fragment', + 'string_literal_content', ')', ')', '(', @@ -8022,7 +8001,7 @@ Generated by [AVA](https://avajs.dev). '(', 'if_statement', '(', - 'condition', + 'parenthesized_expression', '(', 'method_invocation', '(', @@ -8044,7 +8023,7 @@ Generated by [AVA](https://avajs.dev). '(', 'if_statement', '(', - 'condition', + 'parenthesized_expression', '(', 'method_invocation', '(', @@ -9512,7 +9491,7 @@ Generated by [AVA](https://avajs.dev). '(', 'string', '(', - 'string_value', + 'string_content', ')', ')', ')', @@ -9542,7 +9521,7 @@ Generated by [AVA](https://avajs.dev). '(', 'string', '(', - 'string_value', + 'string_content', ')', ')', ')', @@ -9799,7 +9778,7 @@ Generated by [AVA](https://avajs.dev). '(', 'encapsed_string', '(', - 'string_value', + 'string_content', ')', ')', ')', @@ -17382,16 +17361,12 @@ Generated by [AVA](https://avajs.dev). '(', 'program', '(', - 'identifier', - ')', - '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', - 'function', + 'function_definition', '(', 'parameters', '(', @@ -17411,54 +17386,44 @@ Generated by [AVA](https://avajs.dev). ')', ')', '(', - 'block', + 'braced_expression', '(', 'comment', ')', '(', - 'if', + 'if_statement', + '(', + 'binary_operator', '(', 'identifier', ')', '(', - 'ERROR', - '(', - 'ERROR', + 'float', ')', ')', '(', - 'block', + 'braced_expression', + '(', + 'binary_operator', '(', 'identifier', ')', '(', - 'ERROR', - '(', - 'ERROR', - ')', - ')', + 'binary_operator', '(', 'float', ')', '(', - 'ERROR', - '(', - 'ERROR', - ')', - ')', - '(', 'identifier', ')', ')', ')', - '(', - 'identifier', + ')', ')', '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', 'call', @@ -17508,14 +17473,11 @@ Generated by [AVA](https://avajs.dev). ')', ')', ')', - '(', - 'identifier', ')', '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', 'call', @@ -17545,33 +17507,21 @@ Generated by [AVA](https://avajs.dev). '(', 'argument', '(', - 'identifier', - ')', - ')', + 'binary_operator', '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', - 'argument', - '(', 'float', ')', ')', '(', - 'ERROR', - '(', - 'ERROR', - ')', - ')', - '(', - 'argument', - '(', 'float', ')', ')', + ')', '(', 'comma', ')', @@ -17617,24 +17567,18 @@ Generated by [AVA](https://avajs.dev). '(', 'argument', '(', - 'identifier', - ')', - ')', - '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', - 'argument', - '(', 'float', ')', ')', ')', ')', ')', + ')', '(', 'comma', ')', @@ -17649,6 +17593,7 @@ Generated by [AVA](https://avajs.dev). ')', ')', ')', + ')', '(', 'call', '(', @@ -17684,6 +17629,7 @@ Generated by [AVA](https://avajs.dev). ')', ')', ')', + ')', '(', 'comment', ')', @@ -17707,6 +17653,9 @@ Generated by [AVA](https://avajs.dev). 'argument', '(', 'string', + '(', + 'string_content', + ')', ')', ')', '(', @@ -17743,6 +17692,9 @@ Generated by [AVA](https://avajs.dev). 'argument', '(', 'string', + '(', + 'string_content', + ')', ')', ')', '(', @@ -17763,37 +17715,30 @@ Generated by [AVA](https://avajs.dev). 'comment', ')', '(', + 'binary_operator', + '(', 'identifier', ')', '(', - 'ERROR', - '(', - 'ERROR', + 'float', ')', ')', '(', - 'float', - ')', + 'binary_operator', '(', 'identifier', ')', '(', - 'ERROR', + 'string', '(', - 'ERROR', - ')', + 'string_content', ')', - '(', - 'string', ')', - '(', - 'identifier', ')', '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', 'call', @@ -17819,14 +17764,11 @@ Generated by [AVA](https://avajs.dev). ')', ')', ')', - '(', - 'identifier', ')', '(', - 'ERROR', + 'binary_operator', '(', - 'ERROR', - ')', + 'identifier', ')', '(', 'call', @@ -17845,19 +17787,17 @@ Generated by [AVA](https://avajs.dev). 'comma', ')', '(', - 'ERROR', - '(', - 'ERROR', - ')', - ')', - '(', 'argument', '(', + 'unary_operator', + '(', 'identifier', ')', ')', ')', ')', + ')', + ')', '(', 'call', '(', @@ -17878,6 +17818,9 @@ Generated by [AVA](https://avajs.dev). 'argument', '(', 'string', + '(', + 'string_content', + ')', ')', ')', '(', @@ -17926,6 +17869,9 @@ Generated by [AVA](https://avajs.dev). 'argument', '(', 'string', + '(', + 'string_content', + ')', ')', ')', '(', @@ -17974,6 +17920,9 @@ Generated by [AVA](https://avajs.dev). 'argument', '(', 'string', + '(', + 'string_content', + ')', ')', ')', '(', @@ -18944,7 +18893,7 @@ Generated by [AVA](https://avajs.dev). 'type_identifier', ')', '(', - 'object_type', + 'interface_body', ')', ')', '(', @@ -20291,7 +20240,7 @@ Generated by [AVA](https://avajs.dev). 'type_identifier', ')', '(', - 'object_type', + 'interface_body', '(', 'property_signature', '(', @@ -20465,7 +20414,7 @@ Generated by [AVA](https://avajs.dev). 'type_identifier', ')', '(', - 'object_type', + 'interface_body', '(', 'property_signature', '(', @@ -20498,7 +20447,7 @@ Generated by [AVA](https://avajs.dev). 'type_identifier', ')', '(', - 'object_type', + 'interface_body', '(', 'property_signature', '(', diff --git a/lib/src/test/snapshots/tokenizer.test.ts.snap b/lib/src/test/snapshots/tokenizer.test.ts.snap index 6c9242daa..0ef11e402 100644 Binary files a/lib/src/test/snapshots/tokenizer.test.ts.snap and b/lib/src/test/snapshots/tokenizer.test.ts.snap differ diff --git a/package-lock.json b/package-lock.json index 53bd683bd..edb8344f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "commander": "^11.1.0", "csv-stringify": "^6.5.0", "open": "^10.1.0", - "tree-sitter": "^0.20.6" + "tree-sitter": "^0.21.1" }, "bin": { "dolos": "dist/cli.js" @@ -63,7 +63,7 @@ "@dodona/dolos-core": "1.0.2", "@dodona/dolos-parsers": "1.1.0", "d3-dsv": "^3.0.1", - "tree-sitter": "^0.20.6" + "tree-sitter": "^0.21.1" }, "devDependencies": { "@ava/typescript": "git+https://github.com/rien/ava-typescript", @@ -74,13 +74,32 @@ "ava": "5.3.1", "eslint": "8.57.0", "node-gyp": "^9.4.1", - "tree-sitter-json": "0.20.2", + "tree-sitter-json": "0.21.0", "typescript": "5.4.5" }, "engines": { "node": ">=18" } }, + "lib/node_modules/tree-sitter-json": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.21.0.tgz", + "integrity": "sha512-qK2BrNN696dM+7SoYSHlNmsSXaYATYXTbyyKJKufAOD3qFEDfxec70OpYyihzZl/fkDoNENj+pQ8TXkYSC0NkQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.0" + }, + "peerDependencies": { + "tree-sitter": "^0.21.0" + }, + "peerDependenciesMeta": { + "tree_sitter": { + "optional": true + } + } + }, "node_modules/@antfu/utils": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz", @@ -2005,6 +2024,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -3807,6 +3834,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -5211,6 +5243,14 @@ "node": ">=10" } }, + "node_modules/node-addon-api": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.0.0.tgz", + "integrity": "sha512-ipO7rsHEBqa9STO5C5T10fj732ml+5kLN1cAG8/jdHd56ldQeGj3Q7+scUS+VHK/qy1zLEwC4wMK5+yM0btPvw==", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, "node_modules/node-gyp": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", @@ -5237,6 +5277,16 @@ "node": "^12.13 || ^14.13 || >=16" } }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/nofilter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", @@ -6811,14 +6861,13 @@ } }, "node_modules/tree-sitter": { - "version": "0.20.6", - "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.6.tgz", - "integrity": "sha512-GxJodajVpfgb3UREzzIbtA1hyRnTxVbWVXrbC6sk4xTMH5ERMBJk9HJNq4c8jOJeUaIOmLcwg+t6mez/PDvGqg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.21.1.tgz", + "integrity": "sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ==", "hasInstallScript": true, - "license": "MIT", "dependencies": { - "nan": "^2.18.0", - "prebuild-install": "^7.1.1" + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.0" } }, "node_modules/tree-sitter-cli": { @@ -6832,15 +6881,15 @@ "tree-sitter": "cli.js" } }, - "node_modules/tree-sitter-json": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.20.2.tgz", - "integrity": "sha512-eUxrowp4F1QEGk/i7Sa+Xl8Crlfp7J0AXxX1QdJEQKQYMWhgMbCIgyQvpO3Q0P9oyTrNQxRLlRipDS44a8EtRw==", - "dev": true, + "node_modules/tree-sitter-compat": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tree-sitter-compat/-/tree-sitter-compat-0.1.0.tgz", + "integrity": "sha512-kzIz7HvS+LPLjXYdZclsMguhFgSdKEzreW1AqjmQxkuauSLI+GXAojhoO+jpWUbY3J96oornEf3L0sznosawQw==", "hasInstallScript": true, - "license": "MIT", "dependencies": { - "nan": "^2.18.0" + "bindings": "^1.5.0", + "node-addon-api": "^8.0.0", + "prebuild-install": "^7.1.2" } }, "node_modules/ts-api-utils": { @@ -7689,9 +7738,12 @@ "parsers": { "name": "@dodona/dolos-parsers", "version": "1.1.0", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "nan": "^2.19.0" + "nan": "^2.19.0", + "node-addon-api": "^8.0.0", + "tree-sitter-compat": "^0.1.0" }, "devDependencies": { "node-gyp": "^9.4.1", diff --git a/parsers/bash b/parsers/bash index 7331995b1..2fbd860f8 160000 --- a/parsers/bash +++ b/parsers/bash @@ -1 +1 @@ -Subproject commit 7331995b19b8f8aba2d5e26deb51d2195c18bc94 +Subproject commit 2fbd860f802802ca76a6661ce025b3a3bca2d3ed diff --git a/parsers/c b/parsers/c index 25371f944..00ed08f1a 160000 --- a/parsers/c +++ b/parsers/c @@ -1 +1 @@ -Subproject commit 25371f9448b97c55b853a6ee8bb0bfb1bca6da9f +Subproject commit 00ed08f1a6c18141bfd7a81638e4d239a0bb55cc diff --git a/parsers/c_sharp b/parsers/c_sharp index 1648e21b4..82fa8f05f 160000 --- a/parsers/c_sharp +++ b/parsers/c_sharp @@ -1 +1 @@ -Subproject commit 1648e21b4f087963abf0101ee5221bb413107b07 +Subproject commit 82fa8f05f41a33e9bc830f85d74a9548f0291738 diff --git a/parsers/cpp b/parsers/cpp index a90f170f9..d29fbff09 160000 --- a/parsers/cpp +++ b/parsers/cpp @@ -1 +1 @@ -Subproject commit a90f170f92d5d70e7c2d4183c146e61ba5f3a457 +Subproject commit d29fbff09a8c9ff4f3074de2595dfca12cb33da9 diff --git a/parsers/elm b/parsers/elm index debe14fad..09dbf221d 160000 --- a/parsers/elm +++ b/parsers/elm @@ -1 +1 @@ -Subproject commit debe14fad40a8100c679d95c66f599b48111742c +Subproject commit 09dbf221d7491dc8d8839616b27c21b9c025c457 diff --git a/parsers/index.js b/parsers/index.js index e55813ebb..ac8c0a728 100644 --- a/parsers/index.js +++ b/parsers/index.js @@ -1,49 +1,57 @@ +const parsers = {}; -module.exports.bash = require("./build/Release/tree_sitter_bash_binding"); -module.exports.bash.nodeTypeInfo = require("./bash/src/node-types.json"); +parsers.bash = require("./build/Release/tree_sitter_bash_binding"); +parsers.bash.nodeTypeInfo = require("./bash/src/node-types.json"); -module.exports.c = require("./build/Release/tree_sitter_c_binding"); -module.exports.c.nodeTypeInfo = require("./c/src/node-types.json"); +parsers.c = require("./build/Release/tree_sitter_c_binding"); +parsers.c.nodeTypeInfo = require("./c/src/node-types.json"); -module.exports.cpp = require("./build/Release/tree_sitter_cpp_binding"); -module.exports.cpp.nodeTypeInfo = require("./cpp/src/node-types.json"); +parsers.cpp = require("./build/Release/tree_sitter_cpp_binding"); +parsers.cpp.nodeTypeInfo = require("./cpp/src/node-types.json"); -module.exports["c-sharp"] = require("./build/Release/tree_sitter_c_sharp_binding"); -module.exports["c-sharp"].nodeTypeInfo = require("./c_sharp/src/node-types.json"); +parsers["c-sharp"] = require("./build/Release/tree_sitter_c_sharp_binding"); +parsers["c-sharp"].nodeTypeInfo = require("./c_sharp/src/node-types.json"); -module.exports.elm = require("./build/Release/tree_sitter_elm_binding"); -module.exports.elm.nodeTypeInfo = require("./elm/src/node-types.json"); +parsers.elm = require("./build/Release/tree_sitter_elm_binding"); +parsers.elm.nodeTypeInfo = require("./elm/src/node-types.json"); -module.exports.java = require("./build/Release/tree_sitter_java_binding"); -module.exports.java.nodeTypeInfo = require("./java/src/node-types.json"); +parsers.java = require("./build/Release/tree_sitter_java_binding"); +parsers.java.nodeTypeInfo = require("./java/src/node-types.json"); -module.exports.javascript = require("./build/Release/tree_sitter_javascript_binding"); -module.exports.javascript.nodeTypeInfo = require("./javascript/src/node-types.json"); +parsers.javascript = require("./build/Release/tree_sitter_javascript_binding"); +parsers.javascript.nodeTypeInfo = require("./javascript/src/node-types.json"); -module.exports.modelica = require("./build/Release/tree_sitter_modelica_binding"); -module.exports.modelica.nodeTypeInfo = require("./modelica/src/node-types.json"); +parsers.modelica = require("./build/Release/tree_sitter_modelica_binding"); +parsers.modelica.nodeTypeInfo = require("./modelica/src/node-types.json"); -module.exports.php = require("./build/Release/tree_sitter_php_binding"); -module.exports.php.nodeTypeInfo = require("./php/src/node-types.json"); +// Note: this parser provides php_only and php (includes HTML) +parsers.php = require("./build/Release/tree_sitter_php_binding").php; +parsers.php.nodeTypeInfo = require("./php/php/src/node-types.json"); -module.exports.python = require("./build/Release/tree_sitter_python_binding"); -module.exports.python.nodeTypeInfo = require("./python/src/node-types.json"); +parsers.python = require("./build/Release/tree_sitter_python_binding"); +parsers.python.nodeTypeInfo = require("./python/src/node-types.json"); -module.exports.r = require("./build/Release/tree_sitter_r_binding"); -module.exports.r.nodeTypeInfo = require("./r/src/node-types.json"); +parsers.r = require("./build/Release/tree_sitter_r_binding"); +parsers.r.nodeTypeInfo = require("./r/src/node-types.json"); -module.exports.scala = require("./build/Release/tree_sitter_scala_binding"); -module.exports.scala.nodeTypeInfo = require("./scala/src/node-types.json"); +parsers.scala = require("./build/Release/tree_sitter_scala_binding"); +parsers.scala.nodeTypeInfo = require("./scala/src/node-types.json"); -module.exports.sql = require("./build/Release/tree_sitter_sql_binding"); -module.exports.sql.nodeTypeInfo = require("./sql/src/node-types.json"); +parsers.sql = require("./build/Release/tree_sitter_sql_binding"); +parsers.sql.nodeTypeInfo = require("./sql/src/node-types.json"); const typescript_tsx = require("./build/Release/tree_sitter_typescript_binding"); -module.exports.typescript = typescript_tsx.typescript; -module.exports.typescript.nodeTypeInfo = require("./typescript/typescript/src/node-types.json"); +parsers.typescript = typescript_tsx.typescript; +parsers.typescript.nodeTypeInfo = require("./typescript/typescript/src/node-types.json"); -module.exports.tsx = typescript_tsx.tsx; -module.exports.tsx.nodeTypeInfo = require("./typescript/tsx/src/node-types.json"); +parsers.tsx = typescript_tsx.tsx; +parsers.tsx.nodeTypeInfo = require("./typescript/tsx/src/node-types.json"); -module.exports.verilog = require("./build/Release/tree_sitter_verilog_binding"); -module.exports.verilog.nodeTypeInfo = require("./verilog/src/node-types.json"); +parsers.verilog = require("./build/Release/tree_sitter_verilog_binding"); +parsers.verilog.nodeTypeInfo = require("./verilog/src/node-types.json"); + +// Converting tree-sitter 0.21 parsers is a no-op +const convert = require("tree-sitter-compat").convertLanguage; +for (const [key, value] of Object.entries(parsers)) { + module.exports[key] = convert(value); +} diff --git a/parsers/java b/parsers/java index 2b57cd954..953abfc8b 160000 --- a/parsers/java +++ b/parsers/java @@ -1 +1 @@ -Subproject commit 2b57cd9541f9fd3a89207d054ce8fbe72657c444 +Subproject commit 953abfc8bb3eb2f578e1f461edba4a9885f974b8 diff --git a/parsers/javascript b/parsers/javascript index f1e5a09b8..391a8fcc4 160000 --- a/parsers/javascript +++ b/parsers/javascript @@ -1 +1 @@ -Subproject commit f1e5a09b8d02f8209a68249c93f0ad647b228e6e +Subproject commit 391a8fcc48a11f63bf18ec9885f6f069e760949a diff --git a/parsers/modelica b/parsers/modelica index 643c48160..50b878472 160000 --- a/parsers/modelica +++ b/parsers/modelica @@ -1 +1 @@ -Subproject commit 643c481607df4e6a1ab55db8e1509342c2f58ed1 +Subproject commit 50b878472fcfee473ba88acda3a87f1c16518382 diff --git a/parsers/package.json b/parsers/package.json index 13d5885f4..e08f8fb9a 100644 --- a/parsers/package.json +++ b/parsers/package.json @@ -5,11 +5,13 @@ "main": "index.js", "license": "MIT", "scripts": { - "prepare": "cd sql && tree-sitter generate", + "prepare": "(cd sql && tree-sitter generate)", "build": "node-gyp rebuild" }, "dependencies": { - "nan": "^2.19.0" + "nan": "^2.19.0", + "node-addon-api": "^8.0.0", + "tree-sitter-compat": "^0.1.0" }, "devDependencies": { "node-gyp": "^9.4.1", diff --git a/parsers/php b/parsers/php index 33e30169e..b38c53537 160000 --- a/parsers/php +++ b/parsers/php @@ -1 +1 @@ -Subproject commit 33e30169e6f9bb29845c80afaa62a4a87f23f6d6 +Subproject commit b38c53537769df05871643c9688c264074fb6076 diff --git a/parsers/python b/parsers/python index 82f5c9937..71778c2a4 160000 --- a/parsers/python +++ b/parsers/python @@ -1 +1 @@ -Subproject commit 82f5c9937fe4300b4bec3ee0e788d642c77aab2c +Subproject commit 71778c2a472ed00a64abf4219544edbf8e4b86d7 diff --git a/parsers/r b/parsers/r index 11c5f7de4..15e78072d 160000 --- a/parsers/r +++ b/parsers/r @@ -1 +1 @@ -Subproject commit 11c5f7de40f37d5255488a9db22a72f47922d876 +Subproject commit 15e78072da55b0b582c5ff4a38a7b64e480b61e7 diff --git a/parsers/scala b/parsers/scala index e02f003d7..b76db435a 160000 --- a/parsers/scala +++ b/parsers/scala @@ -1 +1 @@ -Subproject commit e02f003d78dc269fef287b9b7b9963dc1f26bd7e +Subproject commit b76db435a7f876cf1ede837d66054c534783c72f diff --git a/parsers/sql b/parsers/sql index 49049d6c1..95f3d66c5 160000 --- a/parsers/sql +++ b/parsers/sql @@ -1 +1 @@ -Subproject commit 49049d6c18a6dcf2d8861c16b026f3d85097763b +Subproject commit 95f3d66c50260b5c96d87bfcf35f50fa4bb64544 diff --git a/parsers/typescript b/parsers/typescript index d847898fe..4ad3010c9 160000 --- a/parsers/typescript +++ b/parsers/typescript @@ -1 +1 @@ -Subproject commit d847898fec3fe596798c9fda55cb8c05a799001a +Subproject commit 4ad3010c91d700026d036b5230e2d99ba94ae8a4 diff --git a/parsers/verilog b/parsers/verilog index 2dfddfcb8..075ebfc84 160000 --- a/parsers/verilog +++ b/parsers/verilog @@ -1 +1 @@ -Subproject commit 2dfddfcb891f74a1cdb9d8ce480a997d11846e17 +Subproject commit 075ebfc84543675f12e79a955f79d717772dcef3