Skeletik
Tiny lexical analyzer
npm i --save-dev skeletik
WARN: This is just a DRAFT!
Usage
// Tokensconst T_GROUP = 'group';const T_NUMBER = 'number';const T_BINARY = 'binary'; // Priority of operationsconst PRIORITY = '/': 1 '*': 1; // Бинарные опреацииconst BINARY = { return a / b } { return a * b } { return a + b } { return a - b }; // Create parserconst ast = {};const parse = ; { const root = ; return { const stack = ; const ops = ; for let i = 0; i < rootlength; i++ const bone = rootnodesi; if bonetype === T_BINARY if PRIORITYboneraw stackstacklength - 1 = BINARYbonerawstackstacklength - 1 +bonenextraw; i++; else ops; else stack; let results = stack; while opslength results = BINARYopsresults stack; return results; }root;}; const str = '(1 + 2) * 4 / -3 + 1';console;