Je suis en train d'écrire une application qui va prendre diverses chaînes "command". J'ai regardé la bibliothèque combinatoire de Scala pour marquer les commandes. Je trouve dans beaucoup de cas que je veux dire: "Ces jetons sont un ensemble sans ordre, et ils peuvent donc apparaître dans n'importe quel ordre, et certains peuvent ne pas apparaître".Grammars, Scala Combinators et Orderless Sets
Avec mes connaissances actuelles de grammaires, je dois définir toutes les combinaisons de séquences en tant que telle (pseudo grammaire):
command = action~content
action = alphanum
content = (tokenA~tokenB~tokenC | tokenB~tokenC~tokenA | tokenC~tokenB~tokenA .......)
Donc ma question est, étant donné tokenA-C sont uniques, est-il un moyen plus court définir un ensemble de n'importe quel ordre en utilisant une grammaire?
Dans ce cas, chaque jeton est une propriété d'objet de style json. Ainsi, une commande pourrait ressembler à "todo message: lier Todo class à la base de données" en raison de: mardi prochain "Donc la règle générique définie dans le style scala est quelque chose comme" token = alphanum ~ ':' ~ repsep (alphanum, ''). Mais j'ai besoin de gérer des propriétés spécifiques différemment. –
Et vous devez vous assurer, que le même ne se produit pas plus d'une fois? – ziggystar
Oui, c'est le plan, certaines propriétés sont facultatives, et elles ne devraient avoir lieu qu'une seule fois. –