Lavoro per un'organizzazione che lavora molto con i dati governativi. Abbiamo un paio di progetti diversi in cui abbiamo estrapolato le operazioni di ricerca / manipolazione di testo comuni in librerie riutilizzabili, per cose come standardizzare il modo in cui i nomi dei politici vengono visualizzati (ad esempio, trasformare "MCDONALD, BOB (R-VA)" in " Bob McDonald (R-VA) "), o trovare citazioni giuridiche nel testo (ad esempio, trovare un riferimento a (ad esempio, trovare occorrenze di cose come" 1 USC 7 "nel testo, determinare che si tratta di una citazione del Codice degli Stati Uniti e restituire un struttura che dice che si riferisce alla sezione 1 del titolo 7) .Queste sono operazioni relativamente semplici, e molti collaboratori nel nostro spazio vorrebbero usarle, ma finiamo per dover scegliere una lingua in cui implementare ciascuna (la prima è in Python, quest'ultimo, Javascript) e congeliamo potenziali consumatori / contributori che lavorano in lingue diverse e non vogliamo ricorrere a hack come eseguire il bombardamento su un processo di nodo per gestire il loro testo. Tutto ciò sembra un peccato perché ciò che stiamo esprimendo è così semplice, e o dovrebbe, si potrebbe pensare, essere abbastanza facile da condividere.
Quale sarebbe l'ideale sarebbe un piccolo DSL che potrebbe esprimere alcune operazioni basilari di elaborazione del testo: ricerca / sostituzione di espressioni regolari, alcune operazioni di elaborazione di elenchi come mappe e filtri e la possibilità di archiviare elementi in dati JSON-ish strutture (mappe ed elenchi) e un meccanismo per tradurre questo DSL o consentirne il consumo da parte dei linguaggi di livello superiore con i quali noi ei nostri collaboratori vogliamo lavorare (Python, JS, Ruby e PHP sono probabilmente i principali quelli). Esiste qualcosa di simile?
Ho pensato di costruirne uno io stesso ... forse una cosa dichiarativa su qualcosa come YAML, o forse un minuscolo sottoinsieme di Scheme o Lua, o forse qualcosa di completamente inventato per questo scopo. Ma volevo vedere se prima c'era già qualcosa.