rawsql-ts
Version:
[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
38 lines • 1.41 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.LiteralParser = void 0;
const ValueComponent_1 = require("../models/ValueComponent");
const LiteralTokenReader_1 = require("../tokenReaders/LiteralTokenReader");
class LiteralParser {
static parseFromLexeme(lexemes, index) {
// Process literal value
let idx = index;
const valueText = lexemes[idx].value;
let parsedValue;
const lex = LiteralTokenReader_1.literalKeywordParser.parse(valueText.toLowerCase(), 0);
if (lex) {
const value = new ValueComponent_1.RawString(lex.keyword);
idx++;
return { value, newIndex: idx };
}
// Check if it is a number
if (/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(valueText)) {
parsedValue = Number(valueText);
}
// Otherwise, treat it as a string
else {
// Remove single quotes if enclosed
if (valueText.startsWith("'") && valueText.endsWith("'")) {
parsedValue = valueText.slice(1, -1);
}
else {
parsedValue = valueText;
}
}
idx++;
const value = new ValueComponent_1.LiteralValue(parsedValue);
return { value, newIndex: idx };
}
}
exports.LiteralParser = LiteralParser;
//# sourceMappingURL=LiteralParser.js.map
;