Estoy escribiendo una aplicación que incluirá varias cadenas de "comandos". He estado buscando en la biblioteca del combinador de Scala para tokenizar los comandos. En muchos casos, me gustaría decir: "Estos tokens son un conjunto sin orden, por lo que pueden aparecer en cualquier orden y algunos pueden no aparecer".Gramáticas, Combinadores de análisis Scala y conjuntos sin orden
Con mi conocimiento actual de las gramáticas que tendría que definir todas las combinaciones de secuencias como tal (pseudo gramática):
command = action~content
action = alphanum
content = (tokenA~tokenB~tokenC | tokenB~tokenC~tokenA | tokenC~tokenB~tokenA .......)
Así que mi pregunta es, considerando tokenA-C son únicos, es que hay un camino más corto para definir un conjunto de cualquier orden usando una gramática?
En este caso, cada token es una propiedad de objeto de estilo json. Así que un comando podría parecerse a "mensaje de todo: vincular clase Todo a la base de datos": el próximo martes ". Por lo tanto, la regla genérica definida en estilo scala es algo así como" token = alphanum ~ ':' ~ repsep (alphanum, ''). Pero sí necesito manejar propiedades específicas de manera diferente. –
Y debes asegurarte de que el mismo no se repita más de una vez. – ziggystar
Sí, ese es el plan, algunas propiedades son opcionales y solo deberían aparecer una vez. –