@schoenbergerb/logical-expression-parser
Version:
Logical expression parser and evaluates result, suitable for permissions management
41 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Tokenizer = void 0;
const token_type_1 = require("./token-type");
const Tokenizer = (expression, customTokens) => {
let literal = "";
const tokens = [];
for (const char of expression) {
const token = (0, token_type_1.getTokenTypeByValue)(char, customTokens);
switch (token) {
case token_type_1.Token.PARENTHESES_OPEN:
case token_type_1.Token.PARENTHESES_OPEN:
case token_type_1.Token.PARENTHESES_CLOSE:
case token_type_1.Token.OPERATOR_NOT:
case token_type_1.Token.OPERATOR_AND:
case token_type_1.Token.OPERATOR_OR:
if (literal) {
tokens.push({
type: token_type_1.Token.LITERAL,
value: literal,
});
literal = "";
}
tokens.push({
type: token,
value: char,
});
break;
default:
literal += char;
}
}
if (literal)
tokens.push({
type: token_type_1.Token.LITERAL,
value: literal,
});
return tokens;
};
exports.Tokenizer = Tokenizer;
//# sourceMappingURL=tokenizer.js.map