rawsql-ts
Version:
[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
34 lines • 1.21 kB
JavaScript
import { LiteralValue, RawString } from "../models/ValueComponent";
import { literalKeywordParser } from "../tokenReaders/LiteralTokenReader";
export class LiteralParser {
static parseFromLexeme(lexemes, index) {
// Process literal value
let idx = index;
const valueText = lexemes[idx].value;
let parsedValue;
const lex = literalKeywordParser.parse(valueText.toLowerCase(), 0);
if (lex) {
const value = new 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 LiteralValue(parsedValue);
return { value, newIndex: idx };
}
}
//# sourceMappingURL=LiteralParser.js.map