Sto scrivendo un'applicazione che includerà varie stringhe di "comando". Stavo guardando la libreria del combinatore di Scala per tokenizzare i comandi. Trovo in molti casi che voglio dire: "Questi token sono un set senza ordine, e quindi possono apparire in qualsiasi ordine, e alcuni potrebbero non apparire".Grammatic, Combinatori di analisi alla scala e set privi di ordini
Con la mia attuale delle conoscenze delle grammatiche avrei dovuto definire tutte le combinazioni di sequenze in quanto tali (pseudo grammatica):
command = action~content
action = alphanum
content = (tokenA~tokenB~tokenC | tokenB~tokenC~tokenA | tokenC~tokenB~tokenA .......)
Quindi la mia domanda è, considerando tokenA-C sono unici, c'è un modo più breve definire un insieme di qualsiasi ordine usando una grammatica?
In questo caso ogni token è una proprietà dell'oggetto in stile json. Quindi un comando potrebbe apparire come "todo message: link Todo class to database" a causa: martedì prossimo ". Quindi la regola generica definita in scala style è qualcosa come" token = alphanum ~ ':' ~ repsep (alphanum, ''). Ma ho bisogno di gestire le proprietà specifiche in modo diverso. –
E devi assicurarti che lo stesso non si verifichi più di una volta? – ziggystar
Sì, questo è il piano, alcune proprietà sono opzionali e dovrebbero verificarsi solo una volta. –