StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.3 KiB
83 lines
2.3 KiB
4 years ago
|
'use strict';
|
||
|
|
||
|
var createCustomError = require('../utils/createCustomError');
|
||
|
var generateGrammar = require('./grammar/generate');
|
||
|
|
||
|
function getLocation(node, point) {
|
||
|
var loc = node && node.loc && node.loc[point];
|
||
|
|
||
|
return loc
|
||
|
? { offset: loc.offset,
|
||
|
line: loc.line,
|
||
|
column: loc.column }
|
||
|
: null;
|
||
|
}
|
||
|
|
||
|
var SyntaxReferenceError = function(type, referenceName) {
|
||
|
var error = createCustomError(
|
||
|
'SyntaxReferenceError',
|
||
|
type + (referenceName ? ' `' + referenceName + '`' : '')
|
||
|
);
|
||
|
|
||
|
error.reference = referenceName;
|
||
|
|
||
|
return error;
|
||
|
};
|
||
|
|
||
|
var MatchError = function(message, lexer, syntax, value, badNode) {
|
||
|
var error = createCustomError('SyntaxMatchError', message);
|
||
|
var errorOffset = -1;
|
||
|
var start = getLocation(badNode, 'start');
|
||
|
var end = getLocation(badNode, 'end');
|
||
|
var css = lexer.syntax.generate(value, {
|
||
|
decorator: function(handlers) {
|
||
|
var bufferOffset = 0;
|
||
|
|
||
|
var handlersChunk = handlers.chunk;
|
||
|
handlers.chunk = function(chunk) {
|
||
|
bufferOffset += chunk.length;
|
||
|
handlersChunk(chunk);
|
||
|
};
|
||
|
|
||
|
var handlersNode = handlers.node;
|
||
|
handlers.node = function(node) {
|
||
|
if (node === badNode) {
|
||
|
errorOffset = bufferOffset;
|
||
|
}
|
||
|
|
||
|
handlersNode.call(this, node);
|
||
|
};
|
||
|
|
||
|
return handlers;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if (errorOffset === -1) {
|
||
|
errorOffset = css.length;
|
||
|
}
|
||
|
|
||
|
error.rawMessage = message;
|
||
|
error.syntax = syntax ? generateGrammar(syntax) : '<generic>';
|
||
|
error.css = css;
|
||
|
error.mismatchOffset = errorOffset;
|
||
|
error.loc = {
|
||
|
source: badNode && badNode.loc && badNode.loc.source || '<unknown>',
|
||
|
start: start,
|
||
|
end: end
|
||
|
};
|
||
|
error.line = start ? start.line : undefined;
|
||
|
error.column = start ? start.column : undefined;
|
||
|
error.offset = start ? start.offset : undefined;
|
||
|
error.message = message + '\n' +
|
||
|
' syntax: ' + error.syntax + '\n' +
|
||
|
' value: ' + (error.css || '<empty string>') + '\n' +
|
||
|
' --------' + new Array(error.mismatchOffset + 1).join('-') + '^';
|
||
|
|
||
|
return error;
|
||
|
};
|
||
|
|
||
|
module.exports = {
|
||
|
SyntaxReferenceError: SyntaxReferenceError,
|
||
|
MatchError: MatchError
|
||
|
};
|