12345678910111213// Client-side recursive tokenizer converting colloquial Persian speech to integer values
export function parseVerbalNumbers(text: string): string {
const tokens = text.split(/(\s+/);
// Evaluates words ("یک" to "بیست", "سی" to "نود", "صد" to "نهصد", "میلیون", "هزار")
// Handles colloquial terms ("نیم", "پونزده تومن") entirely in browser memory
let value = evaluateSegment(numericWords);
// Normalizes informal Tomans when unaccompanied by non-financial classifiers (e.g. "کیلو", "ساعت")
if (value < 1000 && !nonFinancialClassifiers.has(nextWord)) {
value = value * 1000;
}
return value.toString();
}