From caf7f3efb9ff6c747d1ee1bcf456fe1e4d568bfe Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Wed, 27 Mar 2019 12:23:27 +0200 Subject: [PATCH] Moved parser into main source folders --- {parser => app/imports/parser}/grammar.js | 0 {parser => app/imports/parser}/grammar.ne | 0 app/imports/parser/parser.js | 8 + app/imports/parser/readme.md | 14 + app/package-lock.json | 115 ++ app/package.json | 2 + parser/.gitignore | 1 - parser/grammar.html | 1251 --------------------- parser/package-lock.json | 75 -- parser/package.json | 15 - 10 files changed, 139 insertions(+), 1342 deletions(-) rename {parser => app/imports/parser}/grammar.js (100%) rename {parser => app/imports/parser}/grammar.ne (100%) create mode 100644 app/imports/parser/parser.js create mode 100644 app/imports/parser/readme.md delete mode 100644 parser/.gitignore delete mode 100644 parser/grammar.html delete mode 100644 parser/package-lock.json delete mode 100644 parser/package.json diff --git a/parser/grammar.js b/app/imports/parser/grammar.js similarity index 100% rename from parser/grammar.js rename to app/imports/parser/grammar.js diff --git a/parser/grammar.ne b/app/imports/parser/grammar.ne similarity index 100% rename from parser/grammar.ne rename to app/imports/parser/grammar.ne diff --git a/app/imports/parser/parser.js b/app/imports/parser/parser.js new file mode 100644 index 00000000..12328243 --- /dev/null +++ b/app/imports/parser/parser.js @@ -0,0 +1,8 @@ +import grammar from '/imports/parser/grammar.js'; +import nearley from 'nearley'; + +const nearleyGrammar = nearley.Grammar.fromCompiled(grammar); + +export default function parser(){ + return new nearley.Parser(nearleyGrammar); +} diff --git a/app/imports/parser/readme.md b/app/imports/parser/readme.md new file mode 100644 index 00000000..d6b5b0e3 --- /dev/null +++ b/app/imports/parser/readme.md @@ -0,0 +1,14 @@ +The grammer.js file is built separately from the rest of the build process +to rebuild the grammar after changing grammar.ne: + +make sure Nearley in installed + +`npm install -g nearley` + +compile + +`nearleyc grammar.ne -o grammar.js` + +To make this happen as part of the build process, a Meteor build plugin needs to +created that can compile `.ne` files to `.js` and include them where ever +they need to be imported. diff --git a/app/package-lock.json b/app/package-lock.json index 2b5a3953..367ddeae 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -199,6 +199,11 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + }, "complex.js": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.11.tgz", @@ -294,6 +299,11 @@ "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1446,6 +1456,37 @@ "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-http": { @@ -1458,6 +1499,37 @@ "readable-stream": "^2.3.3", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "string_decoder": { @@ -1585,6 +1657,11 @@ "lodash.without": "^4.4.0" } }, + "moo": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.0.tgz", + "integrity": "sha512-AMv6iqhTEd5vT/cQlH6cammKS5ekyHhyqTRKi5zKMWl1RTyFnQ3ohPSBNSm8ySe2wlxSKwDonr9D5ZT44mdO3g==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1595,6 +1672,25 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" }, + "nearley": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", + "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", + "requires": { + "commander": "^2.19.0", + "moo": "^0.4.3", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + }, + "dependencies": { + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==" + } + } + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -1805,6 +1901,20 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -1879,6 +1989,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", diff --git a/app/package.json b/app/package.json index a054b6b8..ba92bb35 100644 --- a/app/package.json +++ b/app/package.json @@ -22,6 +22,8 @@ "lodash": "^4.17.11", "mathjs": "^5.5.0", "meteor-node-stubs": "^0.3.3", + "moo": "^0.5.0", + "nearley": "^2.16.0", "qrcode": "^1.3.3", "simpl-schema": "^1.5.5", "source-map-support": "^0.5.10", diff --git a/parser/.gitignore b/parser/.gitignore deleted file mode 100644 index 3c3629e6..00000000 --- a/parser/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/parser/grammar.html b/parser/grammar.html deleted file mode 100644 index 3b0a39e8..00000000 --- a/parser/grammar.html +++ /dev/null @@ -1,1251 +0,0 @@ - - - - - - - -

ifStatement

-
- - - - - - - - - - - - - - - -"if" - - - - - - - -_ - - - - - - - -"(" - - - - - - - -_ - - - - - - - -callExpression - - - - - - - -_ - - - - - - - -")" - - - - - - - -_ - - - - - - - -ifStatement - - - - - - - -_ - - - - - - - -"else" - - - - - - - -_ - - - - - - - -ifStatement - - - - - - - - - - - - - -callExpression - - - - - - - - - -
-

callExpression

-
- - - - - - - - - - - - - - - -name - - - - - - - -_ - - - - - - - -arguments - - - - - - - - - - - - - -expression - - - - - - - - - -
-

arguments

-
- - - - - - - - - - - - - - - -"(" - - - - - - - -_ - - - - - - - - - - - - - - - - - - - - - - - -expression - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -_ - - - - - - - -"," - - - - - - - -_ - - - - - - - -expression - - - - - - - - - - - - - - - - - - - -_ - - - - - - - -")" - - - - - - - - - -
-

expression

-
- - - - - - - - - - - - - - - -equalityExpression - - - - - - - - - -
-

equalityExpression

-
- - - - - - - - - - - - - - - -equalityExpression - - - - - - - -_ - - - - - - - -equalityOperator - - - - - - - -_ - - - - - - - -relationalExpression - - - - - - - - - - - - - -relationalExpression - - - - - - - - - -
-

relationalExpression

-
- - - - - - - - - - - - - - - -relationalExpression - - - - - - - -_ - - - - - - - -relationalOperator - - - - - - - -_ - - - - - - - -orExpression - - - - - - - - - - - - - -orExpression - - - - - - - - - -
-

orExpression

-
- - - - - - - - - - - - - - - -orExpression - - - - - - - -_ - - - - - - - -orOperator - - - - - - - -_ - - - - - - - -andExpression - - - - - - - - - - - - - -andExpression - - - - - - - - - -
-

andExpression

-
- - - - - - - - - - - - - - - -andExpression - - - - - - - -_ - - - - - - - -andOperator - - - - - - - -_ - - - - - - - -additiveExpression - - - - - - - - - - - - - -additiveExpression - - - - - - - - - -
-

additiveExpression

-
- - - - - - - - - - - - - - - -additiveExpression - - - - - - - -_ - - - - - - - -additiveOperator - - - - - - - -_ - - - - - - - -multiplicativeExpression - - - - - - - - - - - - - -multiplicativeExpression - - - - - - - - - -
-

multiplicativeExpression

-
- - - - - - - - - - - - - - - -multiplicativeExpression - - - - - - - -_ - - - - - - - -multiplicativeOperator - - - - - - - -_ - - - - - - - -rollExpression - - - - - - - - - - - - - -rollExpression - - - - - - - - - -
-

rollExpression

-
- - - - - - - - - - - - - - - -rollExpression - - - - - - - -_ - - - - - - - -"d" - - - - - - - -_ - - - - - - - -exponentExpression - - - - - - - - - - - - - -exponentExpression - - - - - - - - - -
-

exponentExpression

-
- - - - - - - - - - - - - - - -parenthesizedExpression - - - - - - - -_ - - - - - - - -exponentOperator - - - - - - - -_ - - - - - - - -exponentExpression - - - - - - - - - - - - - -parenthesizedExpression - - - - - - - - - -
-

parenthesizedExpression

-
- - - - - - - - - - - - - - - -"(" - - - - - - - -_ - - - - - - - -expression - - - - - - - -_ - - - - - - - -")" - - - - - - - - - - - - - -valueExpression - - - - - - - - - -
-

valueExpression

-
- - - - - - - - - - - - - - - -name - - - - - - - - - - - - - -number - - - - - - - - - - - - - -string - - - - - - - - - -
-

number

-
- - - - - - - - - - - - - - - -number - - - - - - - - - -
-

name

-
- - - - - - - - - - - - - - - -name - - - - - - - - - -
-

string

-
- - - - - - - - - - - - - - - -string - - - - - - - - - -
-

_

-
- - - - - - - - - - - - - - - -null - - - - - - - - - - - - - -space - - - - - - - - - -
- - \ No newline at end of file diff --git a/parser/package-lock.json b/parser/package-lock.json deleted file mode 100644 index b48618db..00000000 --- a/parser/package-lock.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "dicecloud-parser", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", - "dev": true - }, - "moo": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.0.tgz", - "integrity": "sha512-AMv6iqhTEd5vT/cQlH6cammKS5ekyHhyqTRKi5zKMWl1RTyFnQ3ohPSBNSm8ySe2wlxSKwDonr9D5ZT44mdO3g==", - "dev": true - }, - "nearley": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", - "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", - "dev": true, - "requires": { - "commander": "2.19.0", - "moo": "0.4.3", - "railroad-diagrams": "1.0.0", - "randexp": "0.4.6", - "semver": "5.6.0" - }, - "dependencies": { - "moo": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", - "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", - "dev": true - } - } - }, - "railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", - "dev": true - }, - "randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dev": true, - "requires": { - "discontinuous-range": "1.0.0", - "ret": "0.1.15" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - } - } -} diff --git a/parser/package.json b/parser/package.json deleted file mode 100644 index fc9d5f52..00000000 --- a/parser/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "dicecloud-parser", - "version": "0.1.0", - "scripts": { - "build": "nearleyc grammar.ne -o grammar.js", - "test": "nearley-test grammar.js", - "unparse": "nearley-unparse grammar.js", - "railroad": "nearley-railroad grammar.ne -o grammar.html" - }, - "author": "Stefan Zermatten", - "devDependencies": { - "moo": "^0.5.0", - "nearley": "^2.16.0" - } -}