debugger stuff

sdl
Marcus 2021-05-10 16:55:19 -04:00
parent e329ddca0b
commit f9e58aae51
5 changed files with 242 additions and 220 deletions

View File

@ -19,10 +19,13 @@ DIRECTIVE_STATEMENT -> DIRECTIVE __ OPEN_PARAMETERS EOL {% ([,directive,,paramet
DIRECTIVE -> %SINGLETON {% () => 'singleton' %} DIRECTIVE -> %SINGLETON {% () => 'singleton' %}
| %KEEPALIVE {% () => 'keepalive' %} | %KEEPALIVE {% () => 'keepalive' %}
LINK_DECLARATION -> _ %LINK __ IDENTIFIER {% ([,,,id]) => { return { type: 'link', array: false, required: false, name: id }} %} LINK_DECLARATION -> LINK __ IDENTIFIER {% ([,,id]) => { return { type: 'link', array: false, required: false, name: id }} %}
| _ %LINK _ %ARRAY __ IDENTIFIER {% ([,,,,,id]) => { return { type: 'link', array: true, required: false, name: id }} %} | LINK_ARR __ IDENTIFIER {% ([,,id]) => { return { type: 'link', array: true, required: false, name: id }} %}
| _ %REQUIRED __ %LINK __ IDENTIFIER {% ([,,,,,id]) => { return { type: 'link', array: false, required: true, name: id }} %} | %REQUIRED __ LINK __ IDENTIFIER {% ([,,,,id]) => { return { type: 'link', array: false, required: true, name: id }} %}
| _ %REQUIRED __ %LINK _ %ARRAY __ IDENTIFIER {% ([,,,,,,,id]) => { return { type: 'link', array: true, required: true, name: id }} %} | %REQUIRED __ LINK_ARR __ IDENTIFIER {% ([,,,,id]) => { return { type: 'link', array: true, required: true, name: id }} %}
LINK -> %LINK
LINK_ARR -> %LINK %LSQBRACKET %RSQBRACKET
NAMESPACE -> IDENTIFIER NAMESPACE -> IDENTIFIER
| IDENTIFIER %DOTOP NAMESPACE {% ([a,,b]) => { return [`${a}.${b}`] } %} | IDENTIFIER %DOTOP NAMESPACE {% ([a,,b]) => { return [`${a}.${b}`] } %}

View File

@ -1,6 +1,6 @@
{ {
"name": "vogue", "name": "vogue",
"version": "1.0.0", "version": "0.0.1",
"main": "index.js", "main": "index.js",
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
@ -12,6 +12,7 @@
"test": "node run.js test" "test": "node run.js test"
}, },
"dependencies": { "dependencies": {
"debug": "^4.3.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moo": "^0.5.1", "moo": "^0.5.1",
"nearley": "^2.20.1", "nearley": "^2.20.1",

40
run.js
View File

@ -1,5 +1,6 @@
#!/usr/bin/env node #!/usr/bin/env node
import debug from 'debug';
import { resolve, parse } from 'path'; import { resolve, parse } from 'path';
import { readFileSync, readdirSync } from 'fs'; import { readFileSync, readdirSync } from 'fs';
import nearley from 'nearley'; import nearley from 'nearley';
@ -12,11 +13,17 @@ import _ from 'lodash';
const { get, set } = _; const { get, set } = _;
import Module from './Module.js'; import Module from './Module.js';
import System from './System.js'; import System from './System.js';
const debug = true; import tokens from './tokens.js';
// globals inside grammar context // globals inside grammar context
import minify from './minify.js'; import minify from './minify.js';
const log = {
ast: debug('vogue:ast'),
modules: debug('vogue:modules'),
debug: debug('vogue:debug'),
}
Object.defineProperty(Array.prototype, 'empty', { Object.defineProperty(Array.prototype, 'empty', {
get() { get() {
return this.length === 0; return this.length === 0;
@ -34,30 +41,7 @@ function createParser() {
// Generate JavaScript code from the rules // Generate JavaScript code from the rules
const grammarJs = generate(grammarInfoObject, "grammar"); const grammarJs = generate(grammarInfoObject, "grammar");
const lexer = moo.compile({ const lexer = moo.compile(tokens);
LINK: 'link',
NAMESPACE: 'namespace',
REQUIRED: 'required',
SINGLETON: 'singleton',
KEEPALIVE: 'keepalive',
STATIC: 'static',
MEMBER: 'member',
RUNTIME: 'runtime',
IMPORT: 'import',
ASYNC: 'async',
AS: 'as',
STRING: /'(?:\\['\\]|[^\n'\\])*'/,
ARRAY: '[]',
OBJECT: '{}',
LPAREN: '(',
RPAREN: ')',
DOTOP: '.',
JS_BLOCK: /\[\[[^]*?\n\]\]$/,
JS_BLOCK2: /{[^]*?\n}$/,
IDENTIFIER: /[a-zA-Z][a-zA-Z0-9]*/,
SPACE: { match: /\s+/, lineBreaks: true },
SEMICOLON: ';'
});
// lexer.__proto__.formatError = function(token, message) { // lexer.__proto__.formatError = function(token, message) {
// if (token == null) { // if (token == null) {
@ -125,9 +109,9 @@ async function parseModule(location) {
parser.finish(); parser.finish();
const parsed = parser.results[0]; const parsed = parser.results[0];
console.log('='.repeat(80)); log.ast('='.repeat(80));
console.log(location); log.ast(location);
console.log(parsed); log.ast(parsed);
module.name.last = name; module.name.last = name;
module.name.full = name; module.name.full = name;

24
tokens.js 100644
View File

@ -0,0 +1,24 @@
export default {
LINK: 'link',
NAMESPACE: 'namespace',
REQUIRED: 'required',
SINGLETON: 'singleton',
KEEPALIVE: 'keepalive',
STATIC: 'static',
MEMBER: 'member',
RUNTIME: 'runtime',
IMPORT: 'import',
ASYNC: 'async',
AS: 'as',
STRING: /'(?:\\['\\]|[^\n'\\])*'/,
LSQBRACKET: '[',
RSQBRACKET: ']',
LPAREN: '(',
RPAREN: ')',
DOTOP: '.',
JS_BLOCK: /\[\[[^]*?\n\]\]$/,
JS_BLOCK2: /{[^]*?\n}$/,
IDENTIFIER: /[a-zA-Z][a-zA-Z0-9]*/,
SPACE: { match: /\s+/, lineBreaks: true },
SEMICOLON: ';'
};

384
yarn.lock
View File

@ -3,237 +3,247 @@
"@cronvel/get-pixels@^3.4.0": "@cronvel/get-pixels@^3.4.0":
"resolved" "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.0.tgz" version "3.4.0"
"version" "3.4.0" resolved "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.0.tgz"
dependencies: dependencies:
"jpeg-js" "^0.4.1" jpeg-js "^0.4.1"
"ndarray" "^1.0.19" ndarray "^1.0.19"
"ndarray-pack" "^1.1.1" ndarray-pack "^1.1.1"
"node-bitmap" "0.0.1" node-bitmap "0.0.1"
"omggif" "^1.0.10" omggif "^1.0.10"
"pngjs" "^5.0.0" pngjs "^5.0.0"
"async@0.2.10": async@0.2.10:
"resolved" "https://registry.npmjs.org/async/-/async-0.2.10.tgz" version "0.2.10"
"version" "0.2.10" resolved "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
"binary-search-tree@0.2.5": binary-search-tree@0.2.5:
"resolved" "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz" version "0.2.5"
"version" "0.2.5" resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz"
dependencies: dependencies:
"underscore" "~1.4.4" underscore "~1.4.4"
"chroma-js@^2.1.0": chroma-js@^2.1.0:
"resolved" "https://registry.npmjs.org/chroma-js/-/chroma-js-2.1.1.tgz" version "2.1.1"
"version" "2.1.1" resolved "https://registry.npmjs.org/chroma-js/-/chroma-js-2.1.1.tgz"
dependencies: dependencies:
"cross-env" "^6.0.3" cross-env "^6.0.3"
"commander@^2.19.0": commander@^2.19.0:
"resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" version "2.20.3"
"version" "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
"cross-env@^6.0.3": cross-env@^6.0.3:
"resolved" "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz" version "6.0.3"
"version" "6.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz"
dependencies: dependencies:
"cross-spawn" "^7.0.0" cross-spawn "^7.0.0"
"cross-spawn@^7.0.0": cross-spawn@^7.0.0:
"resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" version "7.0.3"
"version" "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
dependencies: dependencies:
"path-key" "^3.1.0" path-key "^3.1.0"
"shebang-command" "^2.0.0" shebang-command "^2.0.0"
"which" "^2.0.1" which "^2.0.1"
"cwise-compiler@^1.1.2": cwise-compiler@^1.1.2:
"resolved" "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz" version "1.1.3"
"version" "1.1.3" resolved "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz"
dependencies: dependencies:
"uniq" "^1.0.0" uniq "^1.0.0"
"discontinuous-range@1.0.0": debug@^4.3.1:
"resolved" "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" version "4.3.1"
"version" "1.0.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
"immediate@~3.0.5":
"resolved" "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
"version" "3.0.6"
"iota-array@^1.0.0":
"resolved" "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz"
"version" "1.0.0"
"is-buffer@^1.0.2":
"resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
"version" "1.1.6"
"isexe@^2.0.0":
"resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
"version" "2.0.0"
"jpeg-js@^0.4.1":
"resolved" "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz"
"version" "0.4.3"
"lazyness@^1.2.0":
"resolved" "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz"
"version" "1.2.0"
"lie@3.1.1":
"resolved" "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz"
"version" "3.1.1"
dependencies: dependencies:
"immediate" "~3.0.5" ms "2.1.2"
"localforage@^1.3.0": discontinuous-range@1.0.0:
"resolved" "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz" version "1.0.0"
"version" "1.9.0" resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz"
immediate@~3.0.5:
version "3.0.6"
resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
iota-array@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz"
is-buffer@^1.0.2:
version "1.1.6"
resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
jpeg-js@^0.4.1:
version "0.4.3"
resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz"
lazyness@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz"
lie@3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz"
dependencies: dependencies:
"lie" "3.1.1" immediate "~3.0.5"
"lodash@^4.17.21": localforage@^1.3.0:
"resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" version "1.9.0"
"version" "4.17.21" resolved "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz"
"minimist@^1.2.5":
"resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
"version" "1.2.5"
"mkdirp@~0.5.1":
"resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
"version" "0.5.5"
dependencies: dependencies:
"minimist" "^1.2.5" lie "3.1.1"
"moo@^0.5.0", "moo@^0.5.1": lodash@^4.17.21:
"resolved" "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz" version "4.17.21"
"version" "0.5.1" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
"ndarray-pack@^1.1.1": minimist@^1.2.5:
"resolved" "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz" version "1.2.5"
"version" "1.2.1" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
mkdirp@~0.5.1:
version "0.5.5"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
dependencies: dependencies:
"cwise-compiler" "^1.1.2" minimist "^1.2.5"
"ndarray" "^1.0.13"
"ndarray@^1.0.13", "ndarray@^1.0.19": moo@^0.5.0, moo@^0.5.1:
"resolved" "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz" version "0.5.1"
"version" "1.0.19" resolved "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz"
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
ndarray-pack@^1.1.1:
version "1.2.1"
resolved "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz"
dependencies: dependencies:
"iota-array" "^1.0.0" cwise-compiler "^1.1.2"
"is-buffer" "^1.0.2" ndarray "^1.0.13"
"nearley@^2.20.1": ndarray@^1.0.13, ndarray@^1.0.19:
"resolved" "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" version "1.0.19"
"version" "2.20.1" resolved "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz"
dependencies: dependencies:
"commander" "^2.19.0" iota-array "^1.0.0"
"moo" "^0.5.0" is-buffer "^1.0.2"
"railroad-diagrams" "^1.0.0"
"randexp" "0.4.6"
"nedb@^1.8.0": nearley@^2.20.1:
"resolved" "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz" version "2.20.1"
"version" "1.8.0" resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz"
dependencies: dependencies:
"async" "0.2.10" commander "^2.19.0"
"binary-search-tree" "0.2.5" moo "^0.5.0"
"localforage" "^1.3.0" railroad-diagrams "^1.0.0"
"mkdirp" "~0.5.1" randexp "0.4.6"
"underscore" "~1.4.4"
"nextgen-events@^1.3.4": nedb@^1.8.0:
"resolved" "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.3.4.tgz" version "1.8.0"
"version" "1.3.4" resolved "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz"
"node-bitmap@0.0.1":
"resolved" "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz"
"version" "0.0.1"
"omggif@^1.0.10":
"resolved" "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz"
"version" "1.0.10"
"path-key@^3.1.0":
"resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
"version" "3.1.1"
"pngjs@^5.0.0":
"resolved" "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz"
"version" "5.0.0"
"railroad-diagrams@^1.0.0":
"resolved" "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz"
"version" "1.0.0"
"randexp@0.4.6":
"resolved" "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz"
"version" "0.4.6"
dependencies: dependencies:
"discontinuous-range" "1.0.0" async "0.2.10"
"ret" "~0.1.10" binary-search-tree "0.2.5"
localforage "^1.3.0"
mkdirp "~0.5.1"
underscore "~1.4.4"
"ret@~0.1.10": nextgen-events@^1.3.4:
"resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" version "1.3.4"
"version" "0.1.15" resolved "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.3.4.tgz"
"setimmediate@^1.0.5": node-bitmap@0.0.1:
"resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" version "0.0.1"
"version" "1.0.5" resolved "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz"
"seventh@^0.7.40": omggif@^1.0.10:
"resolved" "https://registry.npmjs.org/seventh/-/seventh-0.7.40.tgz" version "1.0.10"
"version" "0.7.40" resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz"
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
pngjs@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz"
railroad-diagrams@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz"
randexp@0.4.6:
version "0.4.6"
resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz"
dependencies: dependencies:
"setimmediate" "^1.0.5" discontinuous-range "1.0.0"
ret "~0.1.10"
"shebang-command@^2.0.0": ret@~0.1.10:
"resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" version "0.1.15"
"version" "2.0.0" resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"
setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
seventh@^0.7.40:
version "0.7.40"
resolved "https://registry.npmjs.org/seventh/-/seventh-0.7.40.tgz"
dependencies: dependencies:
"shebang-regex" "^3.0.0" setimmediate "^1.0.5"
"shebang-regex@^3.0.0": shebang-command@^2.0.0:
"resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" version "2.0.0"
"version" "3.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
dependencies:
shebang-regex "^3.0.0"
"string-kit@^0.12.0": shebang-regex@^3.0.0:
"resolved" "https://registry.npmjs.org/string-kit/-/string-kit-0.12.5.tgz" version "3.0.0"
"version" "0.12.5" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
"terminal-kit@^2.1.0": string-kit@^0.12.0:
"resolved" "https://registry.npmjs.org/terminal-kit/-/terminal-kit-2.1.0.tgz" version "0.12.5"
"version" "2.1.0" resolved "https://registry.npmjs.org/string-kit/-/string-kit-0.12.5.tgz"
terminal-kit@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/terminal-kit/-/terminal-kit-2.1.0.tgz"
dependencies: dependencies:
"@cronvel/get-pixels" "^3.4.0" "@cronvel/get-pixels" "^3.4.0"
"chroma-js" "^2.1.0" chroma-js "^2.1.0"
"lazyness" "^1.2.0" lazyness "^1.2.0"
"ndarray" "^1.0.19" ndarray "^1.0.19"
"nextgen-events" "^1.3.4" nextgen-events "^1.3.4"
"seventh" "^0.7.40" seventh "^0.7.40"
"string-kit" "^0.12.0" string-kit "^0.12.0"
"tree-kit" "^0.7.0" tree-kit "^0.7.0"
"tree-kit@^0.7.0": tree-kit@^0.7.0:
"resolved" "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.0.tgz" version "0.7.0"
"version" "0.7.0" resolved "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.0.tgz"
"uglify-js@^3.13.5": uglify-js@^3.13.5:
"resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.5.tgz" version "3.13.5"
"version" "3.13.5" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.5.tgz"
"underscore@~1.4.4": underscore@~1.4.4:
"resolved" "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz" version "1.4.4"
"version" "1.4.4" resolved "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz"
"uniq@^1.0.0": uniq@^1.0.0:
"resolved" "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" version "1.0.1"
"version" "1.0.1" resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz"
"which@^2.0.1": which@^2.0.1:
"resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" version "2.0.2"
"version" "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
dependencies: dependencies:
"isexe" "^2.0.0" isexe "^2.0.0"